我有一个名为feedback
的模型,其中包含属性,评级和评论。 product
可能会收到反馈,appointment
可能会收到反馈,user
可能会收到反馈。
我可以在反馈表中添加单个字段,例如user_id,product_id,appointment_id,但这似乎不是一个非常好的可扩展解决方案。我想到的另一个选择是使用一个通用的reference_id字段和一个reference_model字段,该字段可以填充转换为字符串的模型名称,然后我可以手动解释在reference_id中输入的id是属于用户,产品还是约会。
在给定时间,将每个反馈与3个模型中的任何一个相关联的最佳方法是什么?
答案 0 :(得分:5)
您应该阅读Polymorphic Associations。
class Picture < ActiveRecord::Base
belongs_to :imageable, :polymorphic => true
end
class Employee < ActiveRecord::Base
has_many :pictures, :as => :imageable
end
class Product < ActiveRecord::Base
has_many :pictures, :as => :imageable
end
甚至还有一个不错的RailsCast。