レピュテーション モデルのいずれかに固有のコードはありますか?
belongs_to :owner, :polymorphic => true
そうでない場合は、一般的な評価モデルで aを使用できます。
それ以外の場合は、各サブモデルの belongs_to 呼び出しで :class_name 引数を指定するだけで済むはずです。
単一レピュテーション モデルのコード: (レピュテーションには owner_id:integer 列と owner_type:string 列が必要です)
class Reputation < ActiveRecord::Base
belongs_to :owner, :polymorphic => true
...
end
class User < ActiveRecord::Base
has_one :reputation, :as => :owner
end
class Post < ActiveRecord::Base
has_one :reputation, :as => :owner
end
class Response < ActiveRecord::Base
has_one :reputation, :as => :owner
end
Reputation のサブクラス化 (Reputation テーブルには owner_id:integer および type:string カラムが必要)
class Reputation < ActiveRecord::Base
...
end
class UserReputation < Reputation
belongs_to :owner, :class_name => "User"
...
end
class PostReputation < Reputation
belongs_to :owner, :class_name => "Post"
...
end
class ResponseReputation < Reputation
belongs_to :owner, :class_name => "Response"
...
end
class User < ActiveRecord::Base
has_one :user_reputation, :foreign_key => :owner_id
...
end
class Post < ActiveRecord::Base
has_one :post_reputation, :foreign_key => :owner_id
...
end
class Response < ActiveRecord::Base
has_one :response_reputation, :foreign_key => :owner_id
...
end