簡體   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