2011-09-13 13 views
1

属性、評価、レビュー付きのモデルfeedbackがあります。 productにはフィードバックがある場合があり、appointmentにフィードバックがある場合はuserにフィードバックがある場合があります。多くのモデルの1つで使用できるモデル用のRailsデータベース設計

feedback_ tableのuser_id、product_id、appointment_idなどの個々のフィールドを追加することはできますが、スケーラビリティに優れた解決策ではありません。もう一つの選択肢は、一般化されたreference_idフィールドと、モデル名が文字列に変換されたreference_modelフィールドを使用して、reference_idに入力されたIDがユーザー、製品、または予定。

各フィードバックを3つのモデルのいずれかと特定の時間に関連付けるのに最適な方法は何でしょうか?

答えて

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もあります。

+0

完璧!作品! – alik

関連する問題