我有两个型号
商业和代表
当企业或代表报名时,会显示“您是如何了解我们的?”选项列表。
发现方式是动态的,因此管理员可以添加业务或代表发现我们的方式。例如,管理员可以添加“通过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
我对上述方案毫无信心。所以任何人都可以指出任何问题,并可能建议一个更好的出路..
我还应该在任何列上添加索引吗?
答案 0 :(得分: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_types
,Rails应自动使用