rails g model Article name:string
rails g model Category name:string
rails g model Tag name:string taggable_id:integer taggable_type:string category_id:integer
Я создал свои модели, как показано в предыдущем коде. Статьи будут одной из многих моделей, которые могут иметь теги. Модель категории будет содержать все категории, которые могут быть назначены. Модель тега будет полиморфной таблицей соединений, которая представляет тегированные отношения.
class Article < ActiveRecord::Base
has_many :tags, :as => :taggable
has_many :categories, :through => :taggable
end
class Category < ActiveRecord::Base
has_many :tags, :as => :taggable
has_many :articles, :through => :taggable
end
class Tag < ActiveRecord::Base
belongs_to :taggable, :polymorphic => true
belongs_to :category
end
Я не могу заставить это работать, я могу сделать это не полиморфным, но у меня должно быть что-то не так с полиморфной частью. Любые идеи?
Изменить: все еще не получается это правильно:
class Article < ActiveRecord::Base
has_many :taggables, :as => :tag
has_many :categories, :through => :taggables, :source => :tag, :source_type => "Article"
end
class Category < ActiveRecord::Base
has_many :taggables, :as => :tag
has_many :articles, :through => :taggables, :source => :tag, :source_type => "Article"
end
class Tag < ActiveRecord::Base
belongs_to :taggable, :polymorphic => true
belongs_to :category
end