【问题标题】:How to handle many users and their customers in Ruby on Rails如何在 Ruby on Rails 中处理大量用户及其客户
【发布时间】:2013-04-30 13:35:03
【问题描述】:

实际上,我知道 2 种方法可以使用自己的客户数据处理许多用户。这些数据应该仅供他们自己使用。

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

用户模型

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 

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

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

【问题讨论】:

  • 那些是不同的。第二个允许客户属于多个用户,而第一个不允许。您问“实现我的要求的更好方法是什么”,但您没有具体说明您的要求是什么。
  • 已编辑...许多用户只有自己可以访问的客户。
  • 那么前者就是你所需要的。我会回复作为答案,但 MrTheWalrus 已经给出了很好的答案。

标签: database ruby-on-rails-3 ruby-on-rails-3.2 relationship


【解决方案1】:

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

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

首先,如果您实际上具有多对多关系 - 一个用户有多个客户,但一个客户也可以属于多个用户。

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

【讨论】:

    猜你喜欢
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    相关资源
    最近更新 更多