我一直在尝试将Orders
模型切换为与我的Product
和Service
模型的多态关联。但是,我有一些问题,即使在观看RailsCast并阅读文档之后,我也无法找到答案(所以,这些建议值得赞赏,但我需要更具体的答案)。
问题:
Transaction
模型具有多个belongs_to
关联,并使用自定义父函数来确定它是哪一个。这工作正常,但有人建议多态关联可以清理。transactable_id
和transactable_type
。代码如下。我已经通过手动将它们放入表单中来支持这一点,但如果有人知道正确的方法,那就太棒了!has_many
交易以及Transactions
belongs_to
)中,我无法再使用@cart.transactions.each do |t| ... @t.product.name
类型编码访问内容。我的模型关联看起来像这样:
class Order < ActiveRecord::Base
belongs_to :orderable, :polymorphic => true
end
class Product < ActiveRecord::Base
has_many :orders, :as => :orderable
end
我的表单看起来像这样:
<% form_for [@orderable, @order] do |f| %>
...
<% end %>
在我的Product
显示视图中显示如下:
<%= render 'orders/form' %>
现在,我在render部分中传递product.id的变量,并使用它来填充transactable_id
字段。但是,我觉得这很麻烦。
同样,我已经阅读了教程和API文档并且无法解决这个问题,所以任何帮助都将非常感谢!
答案 0 :(得分:0)
您的问题的答案:
*_id
和*_type
字段。假设您的产品包含许多多态关联订单,并且您想要定义哪个模型订单属于:
order = Order.first
order.orderable