0

実際、自分の顧客データを持つ多くのユーザーを処理する 2 つの方法を知っています。このデータは、自分だけが利用できる必要があります。

途中で、モデルに関係を設定することになります。

ユーザーモデル

has_many :customers

顧客モデル

belongs_to :user

次に、属するデータを取得するために user_id 列を追加する必要があります。

2 番目の方法は、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各 Customer が 1 つの User のみに属する場合、標準/関連付け以外のことを行う理由はありませんbelongs_to

結合テーブル ( などusers_customers) は、次の 2 つのケースのいずれかでのみ実際に役立ちます。

まず、実際に多対多の関係がある場合、1 人のユーザーが多くの顧客を持ちますが、顧客は多くのユーザーに属することもできます。

2 つ目は、ユーザーや顧客に関するデータではなく、両者の関係に関するデータを保存する場合です。この場合、そのデータは結合テーブルに配置される可能性があります。この 2 番目のケースは、基本的な 1 対多の関係では非常にまれです。これは、このようなすべてのデータを Customer レコードに簡単に格納できるためです。多対多の場合、同じ顧客に関連付けられた異なるユーザー間で異なるデータが存在する可能性があるため、最初のケースと組み合わせて使用​​する方がはるかに一般的です (たとえば)。

于 2013-05-06T18:27:46.723 に答える