Ассоциация own_to не создается при использовании collection.build

У меня есть эта форма:

<%= form_for(@debate.debates.build) do |support_form| %>  
  <div>
    <%= support_form.label :content %><br />
    <%= support_form.text_area :content %>
  </div>
  <%= support_form.hidden_field :is_supporting, :value => is_supporting %>
  <div class="actions">
    <%= support_form.submit %>
  </div>
<% end %>

Каждая дискуссия имеет_много дебатов и принадлежит к дискуссии (древовидная структура), и @debate.debates.build должен создать новую дискуссию, которая является потомком @debate, но дебаты, созданные @debate.debates.build, всегда равны нулю.

Однако, когда я запускаю тот же код в irb, ассоциация настроена правильно, и идентификатор нового обсуждения является его родителем, как я и хочу.

В чем дело? И как я могу убедиться, что для новых дебатов правильно настроен идентификатор родительских дебатов?


person Drew    schedule 12.06.2011    source источник


Ответы (1)


Он создает его в памяти, но я не думаю, что он на самом деле сохраняет его до тех пор, пока не будет запущено сохранение, предположительно в действии получателя формы, возможно, в действии создания контроллера.

Чтобы это сработало, идентификатор дебатов (debate_id? вы не показываете достаточно своей модели), возможно, также должен быть в форме.

Наконец, проблема может быть связана с attr_accessible или attr_protected проблемами. Если идентификатор дебатов не может быть установлен как часть массового обновления атрибутов, он может быть потерян в представлении.

person DGM    schedule 12.06.2011
comment
Да, мне пришлось поместить в форму прения_id. Спасибо - person Drew; 13.06.2011