#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. Спасибо, это на некоторое время поставило меня в тупик.