现在我有三个model
公司,商品和子类型
class Commodity < ActiveRecord::Base
has_many :sub_types
end
class SubType < ActiveRecord::Base
belongs_to :commodity
end
现在,公司可以从列表中选择商品,之后就可以了
将选择子类型。那么在数据库中跟踪需要哪个字段。我认为has_many :through
是必需的,但不确定如何跟踪公司选择的商品和子类型
答案 0 :(得分:0)
假设公司和商品有一对多的关系(并且不是很多),您可以执行以下操作:
class Company < ActiveRecord::Base
has_many :commodities
has_many :sub_types, :through => :commodities
end
class Commodity < ActiveRecord::Base
has_many :sub_types
belongs_to :company
end
class SubType < ActiveRecord::Base
belongs_to :commodity
end
company_object.sub_types
将使用上述关系为您提供给定公司的所有子类型。
答案 1 :(得分:0)
看起来最好的选择是多态协会
class SubType < ActiveRecord::Base
belongs_to :organization, polymorphic: true
end
class Company< ActiveRecord::Base
has_many :subtypes, as: :organization
end
class Commodity< ActiveRecord::Base
has_many :subtypes, as: :organization
end
然后,您就可以引用@company.subtypes
,@commodity.subtypes
以及@subtype.organization
通读http://guides.rubyonrails.org/association_basics.html#polymorphic-associations 我希望这有助于