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
