繁体   English   中英

has_many:通过+多态关系

[英]has_many :through + polymorphic relationships

我使用rails3并尝试构建一些复杂的关联。

我有产品,版本和属性模型。

class Version < ActiveRecord::Base
  belongs_to :product
  has_many :specs
  has_many :properties, :through => :specs
end

class Product < ActiveRecord::Base
  has_many :versions
  has_many :specs
  has_many :properties, :through => :specs
end

class Property < ActiveRecord::Base
end

class Spec < ActiveRecord::Base
  belongs_to :product
  belongs_to :spec
  belongs_to :version
end

它工作得很完美,但我想使用产品和版本作为多态关系,因此表规范将只有spec_id和some_other_id,而不是spec_id,product_id,version_id。

我无法弄清楚我应该放在哪里:as和where:polymorphic => true。 你能帮助我吗?

怎么样:

class Version < ActiveRecord::Base
  belongs_to :product
  has_many :specs, :as => :speccable
  has_many :properties, :through => :specs
end

class Product < ActiveRecord::Base
  has_many :versions
  has_many :specs, :as => :speccable
  has_many :properties, :through => :specs
end

class Property < ActiveRecord::Base
end

class Spec < ActiveRecord::Base
  belongs_to :speccable, :polymorphic => true
  belongs_to :spec
end
#table: specs(id,spec_id,speccable_type,speccable_id)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM