我搜索过并搜索过,发现我目前的问题只有部分解决方案。
问题是,我想知道是否可以使用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
都可以对计划和声明发表评论。
我的协会是:
comments
我的问题是:
在Student
模型中将AdminUsers
关联两次是否正确?
我不希望travel plans
拥有refund claims
和comments
,如何将travel plan
标识为refund claim
还是{{1}}?
会有更好的方法吗?
非常感谢大家!
干杯,
答案 0 :(得分:0)
在学生模型中两次关联评论是否正确?
不,不是真的。如果您有重复的关联名称,则只能使用其中一个。如果要同时使用它们,则必须以不同方式命名。
答案 1 :(得分:0)
您可能希望向author
模型添加多态Comment
属性。您只需要has_many :comments, as: :author
和Student
模型{。}}。
如果这是一个新的应用程序,并且您从绿色字段开始,您可能需要稍微重新考虑您的模型并添加AdminUser
和Role
模型。 User
Student
role
与user
AdminUser
相同。