Я только что обнаружил изменение в поведении между рельсами 2.3.5 и рельсами 2.3.8, и я не могу найти что-либо, прибегая к помощи.
У меня есть модели
class Book < ActiveRecord::Base
has_many :authors
accepts_nested_attributes_for authors
end
class Author < ActiveRecord::Base
belongs_to :book
end
У меня естьпросмотр, чтобы заполнить книгу вложенными представлениями авторов.
В контроллере книги у меня есть действие обновления
def update
@book = Book.find(params[:id])
@book.attributes = params[:book]
....
end
params[:book]
выглядит так:
{:name=>"a great book", "authors_attributes"=>{"1"=>{:id"=>"2", "_destroy"=>"", :name => "Boney M"}}}
ПоследниеВ моем процессе я хочу получить доступ к моей обновленной коллекции (перед сохранением объекта книги, например, для проверки) с помощью rails 2.3.5 @ book.authors дал мне коллекцию авторов, обновленную значением в params [: book] hash,Но с 2.3.8 он дает мне коллекцию авторов, загруженную из базы данных.
Моя проблема связана с функцией assign_nested_attributes_for_collection_association (/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/nested_attributes.rb).Возвращает объект AssociationProxy с @loaded = false.Таким образом, в первый раз, когда я хочу получить доступ к своей коллекции с помощью @ book.authors, она перезагружает ее из базы данных.Это было не так с рельсами 2.3.5.
Я что-то здесь упустил или где-то сообщалось об этом новом поведении?
Заранее спасибо за помощь.