【发布时间】:2013-01-08 08:51:54
【问题描述】:
我有两个模型(用户和事件),通过关联具有多个 has_many,我当前的关联是通过以下逻辑:
- 用户可以通过 EventGroup 参与很多活动
- 事件通过 EventGroup 有很多用户
- 用户可以通过 Eventgroup 点赞很多活动
- 活动通过 Eventgroup 获得了很多用户的喜欢
型号:
class User
has_many :event_groups
has_many :events,:through => :event_groups
has_many :event_likes,:through => :event_groups,:class_name => "Event"
end
class Event
has_many :event_groups
has_many :users,:through => :event_groups
has_many :user_likes,:through => :event_groups,:class_name => "User"
end
class EventGroup
belongs_to :user
belongs_to :event
belongs_to :user_like,:class_name => "User"
belongs_to :event_like,:class_name => "Event"
end
EventGroup 列:
user_id
event_id
user_like_id
event_like_id
建立关联后,我尝试使用以下代码创建关联记录:
user = User.first
user.event_likes << Event.first
user.save
这里的记录是用 user_id & event_like_id 而不是 `user_like_id & event_like_id
但我无法通过 event.user_likes 获取用户记录,因此我检查了我的事件组记录。它有nil value for user_like_id.
#<EventGroup id: 24, event_id: 1, user_id: 2,event_like_id: 1, user_like_id: nil>
让我知道正确的做法。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3.2 rails-activerecord