Ruby 使用datamapper进行迁移
我需要在我的用户模型中添加另一列(电子邮件)。我不希望修改MySql数据库中的现有数据。我该怎么做 下面是我原始模型类的代码,我正在使用Sinatra。提前谢谢Ruby 使用datamapper进行迁移,ruby,sinatra,datamapper,Ruby,Sinatra,Datamapper,我需要在我的用户模型中添加另一列(电子邮件)。我不希望修改MySql数据库中的现有数据。我该怎么做 下面是我原始模型类的代码,我正在使用Sinatra。提前谢谢 require 'rubygems' require 'data_mapper' DataMapper.setup(:default,'mysql://root@localhost/database') class User include DataMapper::Resource property :id,
require 'rubygems'
require 'data_mapper'
DataMapper.setup(:default,'mysql://root@localhost/database')
class User
include DataMapper::Resource
property :id, Serial
property :name, String, :unique=>true, :required=>true
end
DataMapper.finalize
对于添加新列之类的简单操作,您可以修改您的模型,然后调用
auto\u upgrade代码>,如下所示:
require 'rubygems'
require 'data_mapper'
class User
include DataMapper::Resource
property :id, Serial
property :name, String, :unique=>true, :required=>true
property :email, String, :unique=>true, :required=>true
end
DataMapper.finalize
DataMapper::Logger.new(STDOUT, :debug)
DataMapper.setup(:default,'mysql://root@localhost/database')
DataMapper.auto_upgrade!
请注意,我更改了调用setup
的位置,以便在建立连接之前创建SQL日志。此处,SQL日志包括以下行:
ALTER TABLE `users` ADD COLUMN `email` VARCHAR(50) NOT NULL
我相信它能满足您的需求,而不会改变现有数据。但是,请注意,如果您想要更改列的功能(例如更改字段的大小),这将不起作用。DataMapper不会检查这种更改。我使用DataMapper.auto\u升级!也对我来说,它总是开箱即用。