У меня возникла проблема создания вложенной полиморфной формы. Я выполняю решение от этой проблемы:Полиморфная вложенная форма
Rails: has_many through with polymorphic association - will this work?
Описания было: человек может иметь много событий и каждое событие может иметь один полиморфный Eventable запись
Вот соответствующие модели:
class Event < ActiveRecord::Base
belongs_to :person
belongs_to :eventable, :polymorphic => true
end
class Meal < ActiveRecord::Base
has_one :event, :as => eventable
end
class Workout < ActiveRecord::Base
has_one :event, :as => eventable
end
class Person < ActiveRecord::Base
has_many :events
has_many :meals, :through => :events, :source => :eventable,
:source_type => "Meal"
has_many :workouts, :through => :events, :source => :eventable,
:source_type => "Workout"
end
Мой контроллер выглядит следующим образом:
def
@person = Person.new
@person.meals.new
@person.workouts.new
new
мой взгляд выглядит следующим образом:
<%= form_for @person do |person| %>
<%= person.fields_for :meals, @person.meals.build do |meals| %>
<%= meals.text_field :food %>
<% end %>
<% end %>
Ошибка Сейчас я получаю:
неизвестный атрибут: person_id
Я думаю, что полиморфные ассоциации мешает создание потому что еда не может быть создана до тех пор, пока человек не будет создан? Правильно ли я создал форму? Благодаря!
У вас есть 'person_id' столбец как целое число в' events' таблицы? Кроме того, я думаю, что код контроллера, который вы предоставили, может быть ошибочным? – Surya
Я думаю, вам не нужно @ person.meals.build –
Нет, в таблице событий нет person_id. О, как обмануто? – guy8214