0

实际上,我知道用自己的客户数据处理许多用户的两种方法。这些数据应该只对他们自己可用。

方法是在模型中设置关系。

用户模型

has_many :customers

客户模型

belongs_to :user

然后我必须添加一个 user_id 列来获取所属数据。

第二种方法是设置一个额外的表,在其中设置 user_id 和 customer_id。像这样的东西:

create_table "users_customers", :id => false, :force => true do |t|
    t.integer "user_id"
    t.integer "customer_id"
  end 

实现我的要求的更好方法是什么。还是有更好的方法?

编辑要求:许多用户只有自己可以访问的客户。

4

1 回答 1

2

如果每个客户只属于一个用户,那么除了标准has_many/belongs_to关联之外,没有理由做任何事情。

连接表(如users_customers)实际上只在以下两种情况之一中有用:

首先,如果你真的有一个多对多的关系——一个用户有很多客户,但一个客户也可以属于很多用户。

其次,当您想要存储的数据不是关于用户或客户,而是关于他们之间的关系时,在这种情况下,可能会将数据放在连接表中。对于基本的一对多关系,第二种情况非常少见,因为所有这些数据都可以很容易地存储在客户记录中。与第一种情况结合使用更为常见,因为在多对多的情况下,同一客户的不同关联用户之间可能存在不同的数据(例如)。

于 2013-05-06T18:27:46.723 回答