Rails 3.1.rc1 и accept_nested_attributes_for

#ruby-on-rails-3 #nested-attributes

#ruby-on-rails-3 #вложенные атрибуты

Вопрос:

У меня есть следующие модели:

 class Survey < ActiveRecord::Base
  set_primary_key :survey_id # I'm using external DB
  belongs_to :user #UPDATED
  has_many :questions, :dependent => :destroy
  accept_nested_attributes_for :questions
end

class Question < ActiveRecord::Base
  set_primary_key :question_id # I'm using external DB
  belogns_to :survey
end
  

Если я перейду в консоль rails и сохраню модель:

 >> params = {"title"=>"Survey 1", "questions_attributes"=>{"0"=>{"title"=>"Question 2"}}}
>> survey = User.first.surveys.build(params) #UPDATED
>> survey.questions.size
=> 2
>> survey = User.first.surveys.new(params)
>> survey.questions.size
=> 1
  

Rails дублирует ресурс вопросов в опросах. Может быть, это ошибка Rails 3.1? Код похож на эпизод 197 railscasts.

Комментарии:

1. Хорошо, проблема в build функции, потому что при new использовании она работает хорошо.

2. Извините, я вношу некоторые изменения в код, потому что исходный код сильно отличается.

3. Метод на самом деле ‘accepts_nested_attributes_for’.

4. …и belogns_to, очевидно, должно быть belongs_to. (это могло бы помочь другим n00b, таким как я, если бы вы исправили код)

Ответ №1:

Это было исправлено в этом коммите.

Исправление присутствует в Rails 3.1.0rc2, поэтому, если вы обновите версию Rails в своем Gemfile:

 gem 'rails', '3.1.0.rc2'
  

И запустите

 $ bundle update rails
  

Это должно работать так, как ожидалось.

Комментарии:

1. Спасибо, это на некоторое время поставило меня в тупик.