我正在构建一个具有多个角色的 Rails 应用程序。我不能对用户模型使用继承,因为每个角色都有非常不同的属性和行为(即 - 登录后不同的页面访问和能力)。所以我决定为每个角色(即客户、服务提供商、客户代表等)建立单独的模型。
这些协会将如何运作?我想出了以下内容,但角色类对我来说看起来很糟糕。如果用户可以拥有多个角色,那也不会那么糟糕,但由于他们只有一个角色,我必须在角色中编写一个自定义验证,以确保只选择一个角色。你们有什么感想?
class User < ActiveRecord::Base
has_one :role
end
class Role < ActiveRecord::Base
has_one :customer
has_one :service_provider
has_one :customer_representative
end
class Customer < ActiveRecord::Base
end
class ServiceProvider < ActiveRecord::Base
end
class CustomerRepresentative < ActiveRecord::Base
end