2012-02-23 12 views
1

ユーザモデルに別の列(電子メール)を追加する必要があります。私はMySqlデータベース内の既存のデータを変更したくありません。私はどうしたらいいですか?datamaを使用した移行

以下は私のオリジナルモデルクラスのコードです。私はSinatraを使用しています。前もって感謝します。新しい列を追加するような単純なもの、あなたがあなたのモデルを変更することができますし、このように、auto_upgrade!を呼び出すために

require 'rubygems' 
require 'data_mapper' 

DataMapper.setup(:default,'mysql://[email protected]/database') 

class User 
    include DataMapper::Resource 
    property :id,    Serial 
    property :name,   String, :unique=>true, :required=>true 
end 

DataMapper.finalize 

答えて

3

私は、どこ setupと呼ばれる変更SQLログよう
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://[email protected]/database') 
DataMapper.auto_upgrade! 

お知らせ接続が設定される前に作成されます。ここにSQLログには次の行が含まれています。

これは、既存のデータを変更することなく、あなたが望むことを信じています。ただし、列のフィーチャを変更する場合(フィールドのサイズを変更するなど)は機能しません。 DataMapperは、そのような変更をチェックしません。

+0

私はDataMapper.auto_upgradeを使用します!あまりにも。それは私のためにいつも箱から出ます。 –

関連する問題