ja hallo erstmal,...
Am Sonntag, 25. November 2007 schrieb Jan Luehr:
> Hallo,...
>
> Am Sonntag, 25. November 2007 schrieb Jan Luehr:
> > Hallo,
> >
> > ich habe im controller eine ziemlich einfache Methode:
> >
> > def update
> > @holding = Holding.find(params[:id])
> > load_lists
> > if @holding.update_attributes(params[:holding])
> > flash[:notice] = 'Bestand erfolgreich aktualisiert.'
> > redirect_to :action => 'show', :id => @holding
> > else
> > render :action => 'edit'
> > end
> > end
> >
> > jedoch funktioniert sie nicht. es greift immer der else Fall, d.h. das
> > die Edit-Maske wird nicht gerendert.
>
> kleiner Tippfehler: »d.h. die Edit-Maske wird immer gerendert«.
Ich habe das ganze mal zurückverfolgt. Für mich sieht's gerade aus, wie ein
ActiveRecord Bug, denn:
ruby script/console
>> h = Holding.new(:name=>"Testeintrag")
=> #<Holding:0xb7102068
@attributes={"name"=>"Testeintrag", "minimum_count"=>nil,
"status_type_id"=>nil, "inventarnummer"=>nil, "storage_location_id"=>nil,
"description"=>nil, "comment"=>nil, "current_count"=>nil, "entry_date"=>nil,
"parent_id"=>nil},
@new_record=true>
>> h.save
=> nil
>>
Dabei fällt irgendwie in's Auge:
- Das Ding landet (verifiziert!) nicht in der Datenbank.
- save gibt nicht false zurück.
Validiere ich auf "name" vorhanden, so gibt dies Spiel:
>> h = Holding.new()
=> #<Holding:0xb712395c
@attributes={"name"=>"", "minimum_count"=>nil, "status_type_id"=>nil,
"inventarnummer"=>nil, "storage_location_id"=>nil, "description"=>nil,
"comment"=>nil, "current_count"=>nil, "entry_date"=>nil, "parent_id"=>nil},
@new_record=true>
>> h.save
=> nil
>> h.save!
ActiveRecord::RecordInvalid: Validation failed: Name Namen angeben
from
/var/lib/gems/1.8/gems/activerecord-1.15.6/lib/active_record/validations.rb:764:in
`save_without_transactions!'
from
/var/lib/gems/1.8/gems/activerecord-1.15.6/lib/active_record/transactions.rb:133:in
`save!'
from
/var/lib/gems/1.8/gems/activerecord-1.15.6/lib/active_record/connection_adapters/abstract/database_statements.rb:59:in
`transaction'
from
/var/lib/gems/1.8/gems/activerecord-1.15.6/lib/active_record/transactions.rb:95:in
`transaction'
from
/var/lib/gems/1.8/gems/activerecord-1.15.6/lib/active_record/transactions.rb:121:in
`transaction'
from
/var/lib/gems/1.8/gems/activerecord-1.15.6/lib/active_record/transactions.rb:133:in
`save!'
from (irb):4
>>
aber:
>> h = Holding.new(:name => "Testeintrag")
=> #<Holding:0xb70d67d8
@attributes={"name"=>"Testeintrag", "minimum_count"=>nil,
"status_type_id"=>nil, "inventarnummer"=>nil, "storage_location_id"=>nil,
"description"=>nil, "comment"=>nil, "current_count"=>nil, "entry_date"=>nil,
"parent_id"=>nil},
@new_record=true>
>> h.save
=> nil
>> h.save!
=> true
>>
Das ganze sieht nicht gut aus.
Könnte das ein Bug in ActiveRecord sein?
Danke,
Alles Gute
Jan
_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug