我无法想出一种将模型结构化为以下内容的方法:
我有用户通过设计 - 用户可以拥有(以及其他)销售,管理和客户的角色。这是通过带有角色模型的HABTM设置的。我已经设置了一个方法,所以我可以执行以下操作
user.is? :Client
我需要的是以下内容:
因此,当SalesPerson登录时,我可以使用User.clients来获取与它们相关的所有客户端。
当新客户在线注册时,我想通过设计创建用户,然后通过嵌套值创建客户端,链接到他们创建的用户。
查看客户端时,应该可以使用下拉列表从中选择SalesAgent。如上所述,这应该使用用户模型。
客户应该能够通过设计登录以访问其详细信息,跟踪订单等。
正如你所看到的,这是令人难以置信的混乱,我不确定最好的办法是什么。我唯一能想到的就是在用户和客户端之间使用HABTM,然后在表单中加入和破解以使其工作。有一个更好的方法吗?我看过也许正在使用
has_one :sales_agent, :class_name => "User"
但无法让它发挥作用。 :/
答案 0 :(得分:1)
不是使用自己的单表继承方案重载User类,而是通常更好地分解db中的角色。它确实在这个阶段使事情更加清晰,并且它是一种更好的方式来存储特定于不属于任何用户的客户或销售代理的数据。 E.g:
class User < ActiveRecord::Base
has_many :clients
has_many :sales_agents
end
class Client < ActiveRecord::Base
belongs_to :user
belongs_to :sales_agent
end
class SalesAgent < ActiveRecord::Base
belongs_to :user
has_many :clients
end