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

Antwort per Email an