0

Client各クライアント インスタンスが複数のアドレス、email_id、phone_numbers を所有および作成する必要があるモデルがあります。単純なhas_many関係ではスケールできないと思うので、has_many :through関係を築くべきだと思いました

has_many :through 関係を使いたい

class Client < ActiveRecord::Base
  has_one :profile
  has_many :addresses, :through => :profile
  has_many :emails, :through => :profile
  has_many :phonenumbers, :through => :profile
end

class Profile < ActiveRecord::Base
  belongs_to :client
  has_many :addresses
  has_many :emailids
  has_many :phonenumbers
end

class Address < ActiveRecord::Base
  belongs_to :profile
end

class EmailId < ActiveRecord::Base
  belongs_to :profile
end

class PhoneNumber < ActiveRecord::Base
  belongs_to :profile
end

その後、次のようなクエリを実行できますか?

client.phonenumbers client.create_phonenumbers等?

それとも、has_many belongs_to に固執して、address、email_id、phone_number をプロファイル関係に入れ、クライアントhas_manyプロファイルと言うべきですか? それは私には正しく聞こえません。上で概説した豊かな交わりには何か利点がありますか?

4

1 に答える 1

0

has_many :through に固執するのは問題ないようだと思います。クライアントと他のテーブル、つまりアドレスなどの間に追加の関係を配置する必要がないため、それらのテーブルに追加の列 client_id も配置する必要がないためです。profile id を入れるだけで同じことができます。

于 2013-01-04T09:12:55.077 に答える