一个对象如何属于/拥有两个用户?

时间:2015-12-05 16:47:41

标签: ruby-on-rails polymorphic-associations model-associations single-table-inheritance

我有一个用户模型和一个偏好模型。用户可以向其他用户寻求帮助,或者如果有人需要帮助,他们可以发表赞助声明他们可以使用。

我的问题是建立关系的最佳方式是什么,以便一个Favor对象可以属于/有两个用户,一个请求帮助,一个帮忙?

非常感谢!

2 个答案:

答案 0 :(得分:1)

如果我要实现这一点,我会在两个不同的属性上制作Favor模型belongs_to两个Users。例如,您可以拥有favor_fromfavor_to属性(每个属性只与User建立关系。)

这使你免于搞清楚哪个用户是哪个。如有必要,您甚至可以对这两个属性使用has_and_belongs_to_many关系 - 这样您就可以让一个Favor属于多个用户。然后,多个用户可以提供帮助,或者多个用户可以获得帮助。

答案 1 :(得分:0)

拥有User模型has_many favorsFavor 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