我有一个用户模型和一个偏好模型。用户可以向其他用户寻求帮助,或者如果有人需要帮助,他们可以发表赞助声明他们可以使用。
我的问题是建立关系的最佳方式是什么,以便一个Favor对象可以属于/有两个用户,一个请求帮助,一个帮忙?
非常感谢!
答案 0 :(得分:1)
如果我要实现这一点,我会在两个不同的属性上制作Favor
模型belongs_to
两个Users
。例如,您可以拥有favor_from
和favor_to
属性(每个属性只与User
建立关系。)
这使你免于搞清楚哪个用户是哪个。如有必要,您甚至可以对这两个属性使用has_and_belongs_to_many
关系 - 这样您就可以让一个Favor
属于多个用户。然后,多个用户可以提供帮助,或者多个用户可以获得帮助。
答案 1 :(得分:0)
拥有User
模型has_many
favors
和Favor
belong_to
User
。
命名可能会更好,但这是它的要点:
class Favor
belongs_to :favor_asker, class_name: 'User'
belongs_to :favor_doer, class_name: 'User'
end
class User
has_many :asked_favors, class_name: 'Favor'
has_many :done_favors, class_name: 'Favor'
end