Mar*_*ins 9 ruby-on-rails ruby-on-rails-3
假设一个模型有两个相同类型的子模型,但有两个不同的分类,例如a Shop有两个ShippingOptions,但一个是国际的,一个是本地的
换句话说,你知道它总会有两个,一个是国际的,一个是本地的,
这是好的做法,甚至可能做到以下几点:
shop.rb
has_one :shipping_option, :as => :international_shipping_option
has_one :shipping_option, :as => :local_shipping_option
Run Code Online (Sandbox Code Playgroud)
否则,应如何处理(最佳做法)
mea*_*gar 18
这样做是完全正常的,但是你选择了错误的语法.
您在a之后belongs_to,需要使用"as"选项作为关联的名称,并指定一个显式的类名:
belongs_to :international_shipping_option, class_name: 'ShippingOption'
belongs_to :local_shipping_option, class_name: 'ShippingOption'
Run Code Online (Sandbox Code Playgroud)
关联的名称映射到外键,因此您应该在表中有两个名为international_shipping_option_ida和a local_shipping_option_id的shop列.
| 归档时间: |
|
| 查看次数: |
4864 次 |
| 最近记录: |