2016-12-13 9 views
0

時に私は、ユーザーの移行のために確認できる工夫を作成していますが、私は移動するとき、私はエラーを取得:いいえ、そのような機能:NOWのRuby on Railsでのマイグレーション

StandardError: An error has occurred, this and all later migrations canceled

SQLite3::SQLException: no such function: NOW: UPDATE users SET confirmed_at = NOW()

移行:

class AddConfirmableToDevise < ActiveRecord::Migration[5.0] 
    def up 
    add_column :users, :confirmation_token, :string 
    add_column :users, :confirmed_at, :datetime 
    add_column :users, :confirmation_sent_at, :datetime 
    # add_column :users, :unconfirmed_email, :string # Only if using reconfirmable 
    add_index :users, :confirmation_token, unique: true 
    # User.reset_column_information # Need for some types of updates, but not for update_all. 
    # To avoid a short time window between running the migration and updating all existing 
    # users as confirmed, do the following 
    execute("UPDATE users SET confirmed_at = NOW()") 
    # All existing user accounts should be able to log in after this. 
    # Remind: Rails using SQLite as default. And SQLite has no such function :NOW. 
    # Use :date('now') instead of :NOW when using SQLite. 
    # => execute("UPDATE users SET confirmed_at = date('now')") 
    # Or => User.all.update_all confirmed_at: Time.now 
    end 

    def down 
    remove_columns :users, :confirmation_token, :confirmed_at, :confirmation_sent_at 
    # remove_columns :users, :unconfirmed_email # Only if using reconfirmable 
    end 
end 

答えて

2

へあなたの質問を引用してください:

# Use :date('now') instead of :NOW when using SQLite. 
# => execute("UPDATE users SET confirmed_at = date('now')") 
関連する問題