関連付けを介して複数の has_many を持つ 2 つのモデル (ユーザーとイベント) があり、現在の関連付けは以下のロジックによるものです。
- ユーザーは 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_like_id & event_like_id の代わりに user_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>
これを行う適切な方法を教えてください。