Ruby on Rails has_many:通过多态关联

时间:2016-03-02 09:35:15

标签: ruby-on-rails activerecord associations

我搜索过并搜索过,发现我目前的问题只有部分解决方案。

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

我的系统students可以创建travel plans(可以属于许多students)和refund claims(只能属于student admin users )为他们的项目。在此系统中,studentsclass 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 都可以对计划和声明发表评论。

我的协会是:

comments

我的问题是:

Student模型中将AdminUsers关联两次是否正确?

我不希望travel plans拥有refund claimscomments,如何将travel plan标识为refund claim还是{{1}}?

会有更好的方法吗?

非常感谢大家!

干杯,

2 个答案:

答案 0 :(得分:0)

  

在学生模型中两次关联评论是否正确?

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

答案 1 :(得分:0)

您可能希望向author模型添加多态Comment属性。您只需要has_many :comments, as: :authorStudent模型{。}}。

如果这是一个新的应用程序,并且您从绿色字段开始,您可能需要稍微重新考虑您的模型并添加AdminUserRole模型。 User Student roleuser AdminUser相同。