Для простых вещей, таких как добавление нового столбца, вы можете изменить свою модель и затем вызвать auto_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 не проверяет такие изменения.