brittohalloran
brittohalloran

Reputation: 3634

Comment belongs_to one of several models

My scenario is that there are several different models which can have comments. Trying to figure out the relationships:

Post
  has_many :comments

Update
  has_many :comments

Comment
  belongs_to EITHER :post OR :update (but not both)????

Whats the proper way to set up the comment relationships? I want to be able to call Post.comments and Update.comments

Upvotes: 0

Views: 140

Answers (1)

mu is too short
mu is too short

Reputation: 434935

Smells like a polymorphic association:

With polymorphic associations, a model can belong to more than one other model, on a single association. For example, you might have a picture model that belongs to either an employee model or a product model.

So you'd want something like this:

class Comment < ActiveRecord::Base
  belongs_to :commentable, :polymorphic => true
end

class Post < ActiveRecord::Base
  has_many :comments, :as => :commentable
end

class Update < ActiveRecord::Base
  has_many :comments, :as => :commentable
end

You'd have to set up a few things in the database for this to work as well. See the Polymorphic Associations section of the Active Record Associations Guide for details on the columns you'll need.

Upvotes: 5

Related Questions