我已經搜索和搜索,發現只有部分解決方案,我當前的問題。Ruby on Rails has_many:通過多態關聯
事情是,我想知道是否有可能使用has_many:通過與Ruby on Rails中的多態關聯。
我有一個系統,students
可以創建travel plans
(可以屬於很多students
)和refund claims
(即只能屬於一個student
)爲他們的項目。在這個系統中,admin users
和students
都能夠對計劃和索賠進行評論。
我的聯繫是:
class Student < ActiveRecord::Base
has_and_belongs_to_many :travel_plans
has_many :refund_claims
has_many :comments, through: :travel_plans
has_many :comments, through: :refund_claims
end
class AdminUser < ActiveRecord::Base
has_many :comments
end
class TravelPlan < ActiveRecord::Base
has_and_belongs_to_many :students
has_many :comments, as: :commentable
end
class RefundClaim < ActiveRecord::Base
belongs_to :student
has_many :comments, as: :commentable
end
class Comment < ActiveRecord::Base
belongs_to :commentable, polymorphic: true
end
我的問題是:
它是正確的Student
模型comments
兩次關聯?
我不想AdminUsers
有travel plans
和refund claims
,我怎麼能確定其comments
作爲一個travel plan
或在refund claim
正在取得?
會有更好的方法嗎?
非常感謝大家!
乾杯,
嗨冬梅爾,感謝您的意見!是的,我從頭開始並預先徹底規劃了所有的關聯。我喜歡這個創建'角色'和'用戶'模型的想法,然後'角色'belongs_to:user'和'User''has_one:role',是否正確?但是,如果評論是在「travel_plan」或「refund_claim」中做出的,我仍然需要確定...或者我錯過了什麼? –
我想我已經回答了我剛剛問過的問題:我必須在'Comment'模型中保留多態關聯並保證'User''has_many:comments',然後我可以跟蹤評論類型('travel_plan '或'refund_claim')和ID。最後,我想我不需要在'User'模型中使用'through:'。我的推理是否正確? –
正確。順便說一句:請檢查(綠色複選標記)你喜歡的答案。 – wintermeyer