将公司关联以选择类型和子类型所需的数据库结构

时间:2014-03-12 13:06:31

标签: ruby-on-rails

现在我有三个model 公司,商品和子类型

class Commodity < ActiveRecord::Base
has_many :sub_types
end

class SubType < ActiveRecord::Base
belongs_to :commodity
end

现在,公司可以从列表中选择商品,之后就可以了  将选择子类型。那么在数据库中跟踪需要哪个字段。我认为has_many :through是必需的,但不确定如何跟踪公司选择的商品和子类型

2 个答案:

答案 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 我希望这有助于