создайте общую Comment
модель и сделайте ее полиморфной, например:
class Comment < ActiveRecord::Base
belongs_to :commentable, :polymorphic => true
end
class Article < ActiveRecord::Base
has_many :comments, :as => :commentable
end
class Thought < ActiveRecord::Base
has_many :comments, :as => :commentable
end
. Из экземпляра модели Article
вы можете получить коллекцию комментариев: @article.comments
Если у вас есть экземпляр модели Comment
, вы можете обратиться к его родителю через @comment.commentable
. Чтобы это работало, вам нужно объявить как столбец внешнего ключа, так и столбец типа вмодель, которая объявляет полиморфный интерфейс:
class CreateComments < ActiveRecord::Migration
def self.up
create_table :comments do |t|
t.text :content
t.references :user
t.references :commentable, :polymorphic => true
t.timestamps
end
end
def self.down
drop_table :comments
end
end