0

我有兩個模型,UserEvent,我會在它們之間建立兩個不同的關聯。我如何設置一個有很多通過兩個不同的關聯在同一個模型之間

我想:
- 用戶有很多主辦的活動
- 用戶有很多參加活動
- 事件屬於一個用戶(所有者/創建者)
- 屬於一個事件許多用戶(與會者)

這是一個具有屬於爲參加活動一對多的關係,只是有許多針對主辦的活動,我只是不知道如何設置正確/導軌方式。

我知道我需要一個users_attended_events表

認爲這將是這樣的User模型

has_many :events, through: :hosted_events 
has_many :events, through: :attended_events 

但我會做怎麼樣的Event的模式?

我:

belongs_to: user 
alias_attribute :owner, :user 
alias_attribute :creator, :user 

has_many :users, through:??? 

這應該是users_attended_events表,所以...我會放在這裏?我該如何命名這個「與會者」

回答

1

它聽起來並不像你需要的has_many協會通過爲用戶舉辦活動。這樣的事情應該充分地做功爲(在user.rb)如果你對你的events表有一個hosted_by_id柱:

has_many :hosted_events, class_name: "Event", foreign_key: "hosted_by_id" 

關於參加假設與列attendee_idevent_id聯接類的事件:

class AttendeeEvent < ActiveRecord::Base 

    belongs_to :attendee, class_name: "User" 
    belongs_to :event 

end 

您可以在以下的關聯添加到user.rb

has_many :attendee_events, foreign_key: "attendee_id" 
has_many :attended_events, through: :attendee_events, source: :event 

source: :event選項表示這種關聯的目標對象從event關聯的接合對象物上發現的。

event.rb該協會是那麼:

belongs_to :hosted_by, class_name: "User" 
has_many :attendee_events 
has_many :attendees, through: :attendee_events 
+0

是什麼user.rb的'的has_many第一的has_many行的目的:attendee_events'?在語義上,我不明白。 用戶有許多參加活動。 我知道attendee_events是連接表/類。但我想,我不明白爲什麼這兩個人需要分離出來。 – NullVoxPopuli

+0

還,那會是經'皺起了眉頭軌道way'如果我使用'attendance'代替attendee_event? (我知道Rails約定是model1_model2) – NullVoxPopuli

+0

實際上,因爲我已經改名的事情attendee_events來求診..我認爲,使語義意義。謝謝! – NullVoxPopuli

相關問題