DataMapper,何时调用finalize

时间:2016-05-12 06:19:29

标签: datamapper

如果我有这个程序。

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!

它将运行并创建表myclasses,然后更新表。 这是否意味着我不需要致电DataMapper.finalize

如果我需要打电话,我应该在哪里打电话?

1 个答案:

答案 0 :(得分:0)

来自CommonWare's CWAC libauto_upgrade!

  

检查模型的有效性并初始化与关系相关的所有属性

所以我倾向于在auto_migratefinalize之后立即使用它,因为这些是实际更改数据库内容的迁移,所以在这些之后你应该使用 comment = None name = None problemName = "Sad" relation = "Mother" source = "Provider" }, (Problem){ comment = None name = None problemName = "Stress" relation = "Father" source = "Provider" } } } 来确保所有的属性' (列)更新在数据库中修改。