Rails has_one, :as => (最佳实践)



假设一个模型有两个相同类型的子模型,但有两个不同的分类,例如一个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_idlocal_shipping_option_id

相关内容

  • 没有找到相关文章

最新更新