我已经搜索了又搜索,只找到了我当前问题的部分解决方案。
问题是,我想知道是否可以在Ruby on Rails中使用has_many:through以及多态关联。
我有一个系统,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
上制作的?
会有更好的方法吗?
提前感谢大家!
干杯
希望向Comment
模型添加多态author
属性。您只需要has_many :comments, as: :author
Student
和AdminUser
模型。
如果这是一个新的应用程序,并且您从绿色领域开始,您可能需要重新考虑您的模型并添加Role
和User
模型。 Student
将不像AdminUser
那样成为user
的role
。
在学生模型中关联两次注释是否正确?
不,不是真的。如果您有重复的关联名称,则只能使用其中一个。如果要同时使用两者,则必须以不同的方式命名它们。