まず、コメントは任意のオブジェクト(私の場合は投稿と記事)に属することができるため、ポリモーフィックな関連付けを設定します。
私は言うことができるようにしたい:
u = user.first
u.comments #This will list all comments from a user
u.comments.where(:commentable_type => "Post")
上記の行は機能しません。SQLを生成します:SELECT"comments"。*FROM "comments"WHERE"comments"。"commentable_id"= 1AND"comments"。"commentable_type"='User'AND"comments"。"commentable_type"='Post'
コメントは2つのタイプに属することができないため、明らかにこれは空のリストを返します。私も言うことができるようにしたいと思います:
f = Food.first
f.comments.first.user #give me the user that posted the first comment
これが私の基本モデルです...これを変更するためのヒントはありますか?
class Comment < ActiveRecord::Base
belongs_to :commentable, :polymorphic => true
end
class Post < ActiveRecord::Base
has_many :comments, :as => :commentable
end
class Article < ActiveRecord::Base
has_many :comments, :as => :commentable
end
class User < ActiveRecord::Base
has_many :comments, :as => :commentable
end