我有兩個模型,用戶和事件。我需要用戶和事件之間的兩種關係。導軌關聯has_many_and_belongs_to
- 用戶(:作爲組織者)< ------->事件,多對多的關係
- 用戶(:如出席者)< ------->事件,多對多關係
我猜如果兩個不同的has_many_and_belongs_to與多態關聯可以用來實現關係。我是新來的鐵路,所以我將不勝感激關於這個問題的任何幫助。
我有兩個模型,用戶和事件。我需要用戶和事件之間的兩種關係。導軌關聯has_many_and_belongs_to
我猜如果兩個不同的has_many_and_belongs_to與多態關聯可以用來實現關係。我是新來的鐵路,所以我將不勝感激關於這個問題的任何幫助。
你不需要這種多態關係。
定義兩個協會兩款車型之間,你可以這樣做:
class User
has_many :organized_events, foreign_key: :organizer_id, class_name: "Event"
has_many :attended_events, foreign_key: :attendee_id, class_name: "Event"
end
class Event
belongs_to :organizer, class_name: "User"
belongs_to :attendee, class_name: "User"
end
這會給你一個一對多的關係。
如果您需要多對多,您需要每個關聯的連接表。
class User
has_many :attendances, foreign_key: :attendee_id
has_many :attended_events, through: :attendances
end
class Event
has_many :attendances, foreign_key: :attended_event_id
has_many :attendees, through: :attendances
end
class Attendance
belongs_to :attended_event, class_name: "Event"
belongs_to :attendee, class_name: "User"
end
和事件組織者協會類似的東西。
見我的問題here
連接表工作完美,謝謝 – pratuat
太棒了!很高興它對你有效 –
正如我在我的評論中提到的,如果您的關係組織者和與會者可以同時存在於同一用戶中,則只需要一個多態關聯。如果是這種情況,請使用多態關聯,如果不是,則可以使用關聯或has_and_belongs_to_many
關聯。第一個是更靈活的,因爲你有一個額外的模型,可以舉例驗證。
能夠在一個用戶是組織者,同時S(他)是與會者?如果不是這種情況,我不認爲你需要一個多態關聯 – jagse