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

Antwort per Email an