与公司选择类型和子类型相关的数据库结构需要什么



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

class Commodity < ActiveRecord::Base
has_many :sub_types
end
class SubType < ActiveRecord::Base
belongs_to :commodity
end

现在,一家公司可以从列表中选择商品,之后 将选择子类型。因此,需要什么字段才能在数据库中跟踪。我认为为此需要has_many :through,但不确定如何跟踪公司选择的商品和子类型

假设公司和商品具有一对一的关系(而不是很多),您可以做以下操作:

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将使用上述关系为您提供给定公司的所有子类型。

看起来最好的选择是是多态关联

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-sassociations阅读我希望这有帮助

最新更新