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

Antwort per Email an