Próbuję przenieść moją aplikację z Rails 3.0.7 do Rails 3.1.3. Mam model klientAsocjacje ActiveRecord są automatycznie zapisywane w przypisaniu po migracji między wersjami Rails, w jaki sposób mogę je wyłączyć?
class Client::Client < ActiveRecord::Base
has_one :contact_address, :class_name => "Address", :foreign_key => :client_id, :conditions => ["kind = ? and state = ?", 2, 1]
end
W metodzie edycji kontrolera I wykonanie tego kodu:
def edit
@client = params[:type].classify.constantize.find params[:id]
@client.contact_address = Address.new(:kind => 2) if @client.contact_address.blank?
end
W drugim wierszu tego kodu Dostaję błędzie:
Failed to save the new associated contact_address.
Więc wydaje się, że przypisanie do @ client.contact_address jakoś wyzwalana metoda zapisu na obiekcie contact_address ... Nie chcę tego ... Czy to jest jakieś nowe zachowanie Rails 3.1.x? Chcę, aby powiązane obiekty były zapisywane tylko wtedy, gdy zadzwonię. Zachowaj! na modelu rodziców - to dla mnie za dużo magii. Czy mogę wyłączyć to zachowanie?
Wyrażenie "@client = params [: type] .classify.constantize.find params [: id]" nie wygląda na bardzo bezpieczne: pozwalasz użytkownikom tworzyć instancje dowolnego typu obiektu, który przekazują jako parametr? –