Search code examples
ruby-on-rails-3associationshas-many-throughmodel-associations

Simplest way to store two has_many relationships with one model in Rails?


A 'user has many posts and a product has many posts, and any given post can belong to either a user or a product but not both.

I think a has_many :through relationship stored in a posts_relationships table and written like:

Class User < ActiveRecord::Base
has_many :posts, :through => posts_relationships

and

Class Product < ActiveRecord::Base
has_many :posts, :through => posts_relationships

would express what I need. Is that the correct and simplest way to do it? It's not a complex relationship so I want to write it as simply as possible.


Solution

  • consider polymorphic association.

    Class User < ActiveRecord::Base
      has_many :posts, :as=>:postings
    end
    
    Class Product < ActiveRecord::Base
      has_many :posts, :as=>:postings
    end
    
    class Post
      belongs_to :posting, :polymorphic=> :true
    end