Ruby on Rails has_many :through in a polymorphic association



我已经搜索了又搜索,只找到了我当前问题的部分解决方案。

问题是,我想知道是否可以在Ruby on Rails中使用has_many:through以及多态关联。

我有一个系统,students可以为他们的项目创建travel plans(可以属于许多students)和refund claims(只能属于一个student)。在这个系统中,admin usersstudents都能够对计划和索赔发表评论。

我的协会是:

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是否正确?

我不希望AdminUserstravel plansrefund claims,我如何识别他们的comments是在travel plan上还是在refund claim上制作的?

会有更好的方法吗?

提前感谢大家!

干杯

您可能

希望向Comment模型添加多态author属性。您只需要has_many :comments, as: :author StudentAdminUser模型。

如果这是一个新的应用程序,并且您从绿色领域开始,您可能需要重新考虑您的模型并添加RoleUser模型。 Student将不像AdminUser那样成为userrole

在学生模型中关联两次注释是否正确?

不,不是真的。如果您有重复的关联名称,则只能使用其中一个。如果要同时使用两者,则必须以不同的方式命名它们。

最新更新