Rails数据库设计的模型可以被许多模型之一使用

时间:2011-09-13 23:13:19

标签: ruby-on-rails ruby database

我有一个名为feedback的模型,其中包含属性,评级和评论。 product可能会收到反馈,appointment可能会收到反馈,user可能会收到反馈。

我可以在反馈表中添加单个字段,例如user_id,product_id,appointment_id,但这似乎不是一个非常好的可扩展解决方案。我想到的另一个选择是使用一个通用的reference_id字段和一个reference_model字段,该字段可以填充转换为字符串的模型名称,然后我可以手动解释在reference_id中输入的id是属于用户,产品还是约会。

在给定时间,将每个反馈与3个模型中的任何一个相关联的最佳方法是什么?

1 个答案:

答案 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