Skip to content

Instantly share code, notes, and snippets.

@AlexKalinin
Forked from seancdavis/image.rb
Created April 15, 2017 03:09
Show Gist options
  • Save AlexKalinin/21899e6de66f7ef022c08db99ab414bd to your computer and use it in GitHub Desktop.
Save AlexKalinin/21899e6de66f7ef022c08db99ab414bd to your computer and use it in GitHub Desktop.
Rails has_many :through Polymorphic Association (http://goo.gl/lxmehk)
# app/models/image.rb
class Image < ActiveRecord::Base
has_many :taggings, :as => :taggable
has_many :tags, :through => :taggings
end
# app/models/post.rb
class Post < ActiveRecord::Base
has_many :taggings, :as => :taggable
has_many :tags, :through => :taggings
end
# app/models/tag.rb
class Tag < ActiveRecord::Base
has_many :taggings
has_many :posts, :through => :taggings, :source => :taggable,
:source_type => 'Post'
has_many :images, :through => :taggings, :source => :taggable,
:source_type => 'Image'
end
# app/models/tagging.rb
class Tagging < ActiveRecord::Base
belongs_to :tag
belongs_to :taggable, :polymorphic => true
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment