0

我有一个Client模型,需要每个客户端实例拥有并创建多个地址、email_ids、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_phonenumbersETC?

还是我应该坚持使用 has_many belongs_to 并将地址、电子邮件 ID 和电话号码放在个人资料关系中,然后说客户has_many资料?这对我来说听起来不对。我上面概述的富人协会有什么好处吗?

4

1 回答 1

0

我认为坚持使用has_many :through 似乎很好。因为我们不需要在客户端和其他表(即地址等)之间添加额外的关系,也不需要在这些表中添加额外的列 client_id。只有放置个人资料 ID 才会这样做。

于 2013-01-04T09:12:55.077 回答