假设一个模型有两个相同类型的子模型,但有两个不同的分类,例如一个Shop
有两个ShippingOptions
,但一个是国际的,一个是本地的
换句话说,你知道它总是有两个,一个是国际的,一个是本地的,
是否是好的做法,甚至可以做到以下几点:
购物.rb
has_one :shipping_option, :as => :international_shipping_option
has_one :shipping_option, :as => :local_shipping_option
否则,应如何处理(最佳实践)
这样做
是完全正常的,但你选择了错误的语法。
您追求的是belongs_to
,您需要使用"as"选项作为关联的名称,并指定显式类名:
belongs_to :international_shipping_option, class_name: 'ShippingOption'
belongs_to :local_shipping_option, class_name: 'ShippingOption'
关联的名称映射到外键,因此shop
表中应有两列名为 international_shipping_option_id
和local_shipping_option_id
。