我已经搜索和搜索,发现只有部分解决方案,我当前的问题。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