如何在活动记录中关联用户和客户投资组合模型



我正在为一家提供审计服务的公司编写rails客户端电话簿。该公司有一个客户组合,所有这些客户都分为所有员工(经理、高级职员和助理)。例如,请参见下图:

                               Manager
                            40 customers
                                  |
                   ________________________________
                   |                              |
                Senior                          Senior
             20 customers                    20 customers
                   |                              |
           __________________             _________________
           |                |             |               |
      Assistant        Assistant      Assistant        Assistant
    10 customers     10 customers    10 customers     10 customers

               *Total customer portfolio: 40 customers

应用程序将向用户显示属于用户分配的客户端的电话号码列表,我需要将用户模型与客户端模型相关联,问题是:所有活动记录关联中的哪一个为该问题提供了最佳解决方案?

在阅读了RubyonRails指南中描述的关联基础知识后,我想我可以将has_many :through与第三个模型(Assignment)一起使用,因为投资组合中的每个客户都需要有一名经理、一名高级职员和一名助理(因为这是在键盘之外发生的)。

我的解决方案如下:

class User < ActiveRecord::Base
  has_many :assignments
  has_many :clients, through: :assignments
end
class Assignment < ActiveRecord::Base
  belongs_to :user
  belongs_to :client    
end
class Client < ActiveRecord::Base
  has_many :assignments
  has_many :users, through: :assignments
end

你认为上面的解决方案怎么样?或者哪一个会是更优雅的解决方案?

创建一个名为Relationship(或其他什么)的表,其中包含两个foreign_id,它们涉及您希望用户和客户端能够相互做什么(例如能够"跟随"对方=>Follower_id和Following_id)。在模型中定义与这些id相关的方法,然后在视图中调用这些方法来显示关系。

最新更新