您好我有3个型号:
- 每次销售应该只有一个CUSTOMER
- 每个CUSTOMER可以有多个SALE
这很好用,这里没问题,但现在我需要这样的东西:
- 每次销售应该只有一个CUSTOMER_ADDRESS
- 每个CUSTOMER可以有多个CUSTOMER_ADDRESS
然后,我该怎么做?
我可以一起使用has_one和has_many吗?
答案 0 :(得分:0)
首先在客户和地址之间创建1-n关联:
class Customer < ApplicationRecord
has_many :addresses
end
class Address < ApplicationRecord
belongs_to :customer
end
然后添加订单模型并设置关联:
class Customer < ApplicationRecord
has_many :addresses
has_many :sales
end
class Address < ApplicationRecord
belongs_to :customer
has_many :sales_as_shipping_address, class_name: 'Sale',
foreign_key: 'shipping_address_id'
end
class Sale < ApplicationRecord
belongs_to :customer
belongs_to :shipping_address, class_name: 'Address'
end
这会创建两个单独的关联 - 销售和客户都与地址有明显的关联。
如果您想通过促销加入客户地址,我们可以:
class Customer < ApplicationRecord
has_many :addresses
has_many :sales
has_many :shipping_addresses, through: :sales,
source: :shipping_address
end