2016-05-12 19 views
0

Wenn ich dieses Programm habe.DataMapper, wenn anrufen Finalize

require 'dm-core' 
require 'dm-migrations' 

DataMapper::Logger.new($stdout, :debug) 
DataMapper.setup(:default, “sqlite3:///#{Dir.pwd}mydb.sqlite”) 

class MyClass 
    include DataMapper::Resource 
    property :id, Serial 
    property :column1, String, :required => true 
end 
DataMapper.auto_migrate! 

class MyClass 
    property :column2, String 
end 
DataMapper.auto_upgrade! 

Es läuft und eine Tabelle myclasses erstellen und dann die Tabelle aktualisieren. Bedeutet das, dass ich DataMapper.finalize nicht anrufen muss?

Wenn ich anrufen soll, wo soll ich anrufen?

Antwort

0

Vom docs, .finalize:

prüft die Modelle für die Gültigkeit und initialisiert alle mit Beziehungen zugehörigen Eigenschaften

So neige ich dazu, es zu benutzen, sofort nach auto_upgrade! oder auto_migrate, weil diese die Migrationen die den Inhalt Ihrer Datenbank ändern, sollten Sie nach diesen Schritten finalize verwenden, um sicherzustellen, dass alle Aktualisierungen der Eigenschaften (Spalten) in der Datenbank geändert werden.