Hi Björn,
sehr komischer Fehler. Kannst du mal versuchen, statt
o.lastschrift = Lastschrift.new
die build methode zu nutzen:
o.build_lastschrift
Ansonsten könnte es sein, dass Rails eine deiner Klassen nicht korrekt
lädt, aber warum weiß ich nicht.
Interessant wäre dann noch das Order Model...
Hast du noch irgendwelche Plugins?
Gruß
Thomas
Björn Großmann wrote:
Liebe Ruby on Railer,
ich habe ein komisches Problem - weiß gerade garnicht, wie ich es
schildern soll, aber vielleicht klingelt es ja doch bei einem von Euch
und Ihr habt einen schnellen Tipp für mich.
Ich habe folgendes Datenmodell:
Order has_one Lastschrift
Sowohl in meinen Functional Tests und über script/console kann ich
auch so etwas sagen wie:
o = Order.new
l = Lastschrift.new
o.lastschrift = l
o.save
Das spricht für mich dafür, dass ich an dieser Stelle alles richtig
gemacht habe.
Im "richtigen" Code habe ich nun eine Order "order".
order.lastschrift = Lastschrift.new
schlägt fehl:
NoMethodError in StoreController#adresse
You have a nil object when you didn't expect it!
The error occurred while evaluating nil.klass
|RAILS_ROOT: script/../config/..|
Application Trace <http://localhost:3000/store/adresse#> | Framework
Trace <http://localhost:3000/store/adresse#> | Full Trace
<http://localhost:3000/store/adresse#>
|vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb:147:in
`raise_on_type_mismatch'
vendor/rails/activerecord/lib/active_record/associations/has_one_association.rb:44:in
`replace'
vendor/rails/activerecord/lib/active_record/associations.rb:908:in
`lastschrift='
app/controllers/store_controller.rb:113:in `adresse'|
Ich habe in die Active Record Klasse association_proxy.rb geschaut,
hier ist folgender Code:
def raise_on_type_mismatch(record)
unless record.is_a?(@reflection.klass)
raise ActiveRecord::AssociationTypeMismatch, "#{@
reflection.class_name} expected, got #{record.class}"
end
end
Dort ist die Variable @reflection nil.
Um das ganze noch etwas unverständlicher zu machen, musste ich
feststellen, dass auch ein order.to_yaml einen Fehler produziert:
TypeError in StoreController#adresse
wrong argument type nil (expected Data)
|RAILS_ROOT: script/../config/..|
Application Trace <http://localhost:3000/store/adresse#> | Framework
Trace <http://localhost:3000/store/adresse#> | Full Trace
<http://localhost:3000/store/adresse#>
|/usr/local/lib/ruby/1.8/yaml.rb:387:in `emit'
/usr/local/lib/ruby/1.8/yaml.rb:387:in `quick_emit'
/usr/local/lib/ruby/1.8/yaml/rubytypes.rb:15:in `to_yaml'
app/controllers/store_controller.rb:112:in `adresse'
|
Das Verhalten ist reproduzierbar (auch nach Neustart von WEBrick und
löschen der Session-Daten).
Ich benutze folgende Version von Rails etc.:
Ruby version 1.8.5 (i686-darwin8.8.2 )
RubyGems version 0.9.4
Rails version 1.2.5
Active Record version 1.15.5
Action Pack version 1.13.5
Action Web Service version 1.2.5
Action Mailer version 1.3.5
Active Support version 1.4.4
Environment development
Database adapter mysql
Database schema version 8
Also, falls jemand ein ähnliches Problem hat oder eine Idee, ich bin
für Hinweise sehr dankbar!
Schöne Grüße,
Björn
------------------------------------------------------------------------
_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug
_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug