这比我想象的要困难:我正在构建一个系统,用户可以在其中扮演两个角色:卖家和买家。架构必须满足这一要求:
我考虑过不同的设计模式,但我不擅长数据库设计,所以我不确定应用哪一个或如何应用。我已经放弃了STI,所以我认为解决方案必须是某种用户has_many:profiles&买方/卖方belongs_to:用户。但我不确定我是否应该使用多态,通过或其他类型的关系。
答案 0 :(得分:1)
我已经构建了一些具有类似要求的应用程序。我认为满足您要求的最佳解决方案是has_many :through
。
class Person < ActiveRecord
has_many :assignments
has_many :roles, :through => :assignments
end
class Assignment < ActiveRecord
belongs_to :person
belongs_to :role
end
class Role < ActiveRecord
has_many :assignments
has_many :people, :through => :assignments
validates :name, :presence => true
delegates :profile, :to => :assignment
end
数据库:
people
|-- first_name, :string
|-- last_name, :string
assignments
|-- person_id, :integer
|-- role_id, :integer
|-- profile, :text
roles
|-- name, :string