0

我有两个模型

业务和代表

当企业或代表注册时,他们会看到“您是如何得知我们的?”的选项列表。

发现方式是动态的,因此管理员可以添加企业或代表可以发现我们的方式。例如,管理员可以添加“通过 Google”、“通过朋友”、“通过其他代表”等选项。每种发现类型可以针对企业或代表,或两者兼而有之。

我应该如何建模discovery_type模型,它应该有什么关系,我在想一些事情如下

Schema : 
table: discovery_types
name: string
type: string(can be one of 'business','representative', 'both')

class DiscoveryType< ActiveRecord::Base
  has_many :businesses
  has_many :representatives
end

class Business< ActiveRecord::Base
  belongs_to :discovery_type
end

class Representative< ActiveRecord::Base
  belongs_to :discovery_type
end

我只是对上述方案没有信心。所以任何人都可以指出任何问题,并可能提出更好的出路..

我还应该在任何列上添加索引吗?

4

1 回答 1

1

编辑:不是多态关联,你是对的 - 这是相反的关系。

这应该适用于您想要的关系 -

class DiscoveryType< ActiveRecord::Base
  has_many :discoveries
end

class Discovery < ActiveRecord::Base
  belongs_to :discovery_type
end

class Business < Discovery
end

class Representative < Discovery
end

如果您将type列留在discovery_typesRails 中应自动使用它

于 2012-05-30T12:46:17.973 回答