问题 belongs_to和has_many属于同一模型


我想知道是否有办法用rails做到这一点。基本上我有一个用户模型和一个事件模型。事件由用户创建,我希望在事件模型中有一个外键(user_id),用于指示创建事件的人员。此外,事件可以有许多用户参加,因此事件模型变得类似

belongs_to :user
has_many :users, :through => :guests #suppose i have the guest model 

用户模型看起来像

has_many :events, :through => :guests

我还没有尝试过这个协会,但我希望能够说

e = Event.find(1)
e.creator #returns the user who created this event

代替

e.user

有没有办法让我这样做?


12784
2017-12-23 06:33


起源



答案:


只需将一些选项传递给 belongs_to

belongs_to :creator, :class_name => "User", :foreign_key => "user_id"

这指定了 creator 方法将是一个 User 对象,引用 user_id 领域。


10
2017-12-23 06:40



而已!谢谢 - denniss
等一下,我会在用户模型上放什么?如果我想说user.created_events返回用户创建的事件? - denniss
@denniss你可以这样做,但不能用 has_many :through。 - Jacob Relkin
我该怎么做或者你可以将我推荐给这样做的文章或教程吗? - denniss
@denniss没有办法通过一个 has_many :through。如果你能牺牲 :through,那你就可以用了 has_many :created_events, :class_name => "Event" - Jacob Relkin


答案:


只需将一些选项传递给 belongs_to

belongs_to :creator, :class_name => "User", :foreign_key => "user_id"

这指定了 creator 方法将是一个 User 对象,引用 user_id 领域。


10
2017-12-23 06:40



而已!谢谢 - denniss
等一下,我会在用户模型上放什么?如果我想说user.created_events返回用户创建的事件? - denniss
@denniss你可以这样做,但不能用 has_many :through。 - Jacob Relkin
我该怎么做或者你可以将我推荐给这样做的文章或教程吗? - denniss
@denniss没有办法通过一个 has_many :through。如果你能牺牲 :through,那你就可以用了 has_many :created_events, :class_name => "Event" - Jacob Relkin