У меня есть таблица Category
, которая может иметь много Businesses
и Posts
. И Business
/Post
может иметь много Categories
, поэтому я создал полиморфный текст, называемый CategoryRelationship
, чтобы разбить многие на многие отношения.Rails HABTM с полиморфными отношениями
Business
модель имеет следующие соотношения:
has_many :categories, through: :category_relationships, :source => :category_relationshipable, :source_type => 'Business'
has_many :category_relationships
CategoryRelationship
модель имеет следующие соотношения:
attr_accessible :category_id, :category_relationship_id, :category_relationship_type
belongs_to :category_relationshipable, polymorphic: true
belongs_to :business
belongs_to :post
belongs_to :category
Category
имеет следующие соотношения:
has_many :category_relationships
has_many :businesses, through: :category_relationships
has_many :posts, through: :category_relationships
Post
будет иметь аналогичные отношений Типы onships как Business
.
Так что теперь, когда я бегу Business.first.categories
я получаю ошибку:
Business Load (6.1ms) SELECT "businesses".* FROM "businesses" LIMIT 1
Business Load (2.5ms) SELECT "businesses".* FROM "businesses" INNER JOIN "category_relationships" ON "businesses"."id" = "category_relationships"."category_relationshipable_id" WHERE "category_relationships"."business_id" = 3 AND "category_relationships"."category_relationshipable_type" = 'Business'
ActiveRecord::StatementInvalid: PG::Error: ERROR: column category_relationships.business_id does not exist
LINE 1: ...lationships"."category_relationshipable_id" WHERE "category_...
^
: SELECT "businesses".* FROM "businesses" INNER JOIN "category_relationships" ON "businesses"."id" = "category_relationships"."category_relationshipable_id" WHERE "category_relationships"."business_id" = 3 AND "category_relationships"."category_relationshipable_type" = 'Business'
Как структурировать отношения так это работает?
Возможный дубликат [ActiveRecord, имеет \ _many: через и полиморфных ассоциаций] (http://stackoverflow.com/questions/1683265/activerecord-has-many-through-and-polymorphic-associations) – sbonami