Seltsames Problem mit ActiveRecord in Migration

Hallo Liste,
bin gerade etwas verwirrt.

Folgendes funktioniert wunderbar per script/console: (Beispiel)

Reservierung.find(:all).size
=> 11

Wenn ich allerdings jetzt Reservierung.find(:all).size in einer
Migration einsetze, bekomm ich folgende Fehlermeldung:
– find(:all)
rake aborted!
undefined method `find’ for
#ActiveRecord::ConnectionAdapters::PostgreSQLAdapter:0x5577380

Das interessante ist nun allerdings dass ich ein Angebot Modell habe das
quasi identisch zu dem Reservierung Modell ist.
Da läuft Angebot.find(:all).size ohne zucken.

Will die beiden Modells auf STI umändern, nur versteh ich gerade nicht
warum find eine undefined method sein soll,
aber eben nur in der Migration. In der Anwendung oder der Konsole gibts
keinerlei Probleme…

Jemand eine Idee oder Ratschlag wie ich dahinter kommen kann was hier
schief läuft?

Gruß

aber eben nur in der Migration. In der Anwendung oder der Konsole gibts
keinerlei Probleme…

AR Objekte in Migrationen sind ein schwieriges Thema. Zur Sicherheit
musst du jede Klasse, die du nutzen willst, auch in der Migration
definieren:

cat db/migrations/001_bla.rb

class Reservierungen < ActiveRecord::Base
end

class Bla < ActiveRecord::Migration
def self.up
end

def self.down
end
end

Genauso mit Relationen zwischen den AR-Klassen.

Jonathan

Hmm. Ok. Werde mich mal so testen. Berichte dann obs was gebracht hat.
Allerdings ist es dann immer noch äusserst seltsam dass es einmal geht
und einmal eben nicht.

Was heisst sind ein schwieriges Thema? Gibts da nähere Infos dazu? Bzw.
wo kann ich mich schlauer machen?

Gruss und Danke

Jonathan W. schrieb:

On 28.09.2007, at 14:12, Daniel W. wrote:

Hmm. Ok. Werde mich mal so testen. Berichte dann obs was gebracht hat.
Allerdings ist es dann immer noch äusserst seltsam dass es einmal
geht und einmal eben nicht.

Was heisst sind ein schwieriges Thema? Gibts da nähere Infos dazu?
Bzw. wo kann ich mich schlauer machen?

Es scheint vor allem mit Postgres ein schwieriges Thema zu sein:
http://dev.rubyonrails.org/ticket/5571

Es gibt weder einen echten Fix dafuer noch interessiert sich noch
jemand fuer dieses Ticket wie’s scheint.

Cheers, Mathias

// Mathias Meyer
// PAPERPLANES SOFTWARE.ENTWICKLUNG
// www.paperplanes.de
// Gabriel-Max-Str. 3, 10245 Berlin
// meyer.at.paperplanes.de,
0163.765.27.47_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Daniel W. wrote:

Hmm. Ok. Werde mich mal so testen. Berichte dann obs was gebracht hat.
Allerdings ist es dann immer noch äusserst seltsam dass es einmal geht
und einmal eben nicht.

Das liegt an dem KlassLoader innerhalb der Migrations, der lädt recht
“zufällig”.

Was heisst sind ein schwieriges Thema? Gibts da nähere Infos dazu? Bzw.
wo kann ich mich schlauer machen?

DB-Migration und der Code sind nicht unabhängig. D.h. eine Migration,
die von schema 1 auf 5 funktioniert kann sehr einfach von 1 auf 43
fehlschlagen.

Das liegt daran, dass der Code, der von der Migration vorausgesetzt
wird, sich ja durch Commits ändert.

Siehe auch

Wenn das immer im Kopf behält und brav alle Klassen und Methoden, die
man in einer Migration nutzt auch in der Migration definiert, ist das
kein Problem mehr.

Jonathan

Ok. Wenn ich die Klassen definiere funktionierts. Aber schon seltsam das
Ganze.
Aufjedenfall Danke für die Hinweise und die prompte Hilfe.

Gruss

Jonathan W. schrieb: