Я пытался переключить свою модель Orders
на полиморфную ассоциацию с моими моделями Product
и Service
. Однако у меня есть несколько вопросов, на которые я не смог найти ответы, даже после просмотра RailsCast и чтения документации (поэтому эти предложения приветствуются, но мне нужен более конкретный ответ).
Вопрос:
- Является ли полиморфная ассоциация лучшей в этом случае? До этого я использовал модель
Transaction
, в которой было несколько belongs_to
ассоциаций, и использовал пользовательскую родительскую функцию, чтобы определить, какая это была. Это работало нормально, но кто-то предположил, что полиморфная ассоциация может привести в порядок вещи.
- Я правильно настроил полиморфную ассоциацию и не смог автоматически заполнить поля
transactable_id
и transactable_type
. Код ниже. Я обошел это стороной, вставив их вручную в форму, но если кто-нибудь знает, как это сделать, это было бы здорово!
- Как я могу получить доступ к элементам с полиморфными ассоциациями? Например, в моем объекте Cart (какие
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' %>
Теперь я передаю переменную для product.id в частичную визуализацию и использую ее для заполнения поля transactable_id
. Но я чувствую, что это очень грязно.
Опять же, я прочитал руководства и документы по API и не смог решить эту проблему, поэтому любая помощь будет принята с благодарностью !!