8

私は、別のユーザーで既存のデータベースにdeviseを追加するにはどうすればいいですか?ここで私は既に顧客モデルを定義しており、私はdeviseがそれを処理できるように変更したいと思っています。既存のモデル/データベースからインストールすること

私は新しい移行を作成し、挿入されたコードは、それが動作するはずです。これによると

class AddDeviseToCustomer < ActiveRecord::Migration 
    def change 
    change_table :customers do |t| 
     #t.database_authenticatable 
     t.string :encrypted_password, :null => false, :default => '', :limit => 128 
     t.confirmable 
     t.recoverable 
     t.rememberable 
     t.trackable 
     t.token_authenticatable 
     t.timestamps 
    end 
    end 
end 

従っていています。 https://github.com/plataformatec/devise/wiki/How-To:-change-an-already-existing-table-to-add-devise-required-columns。すくいデシベルを実行している場合しかし:私は次の行

rails g devise:install 

工夫がそれを認識しません任意の理由を実行している以下の

undefined method `confirmable' for #<ActiveRecord::ConnectionAdapters::Table:0x9286a28> 

を得る移行、私は顧客があると言って何かをする必要があります飼い主 ありがとうございます

+0

Gemfileに "devise" gemを追加してから、 "bundle install"を実行しましたか?ただの確認:) –

+0

はい私はしましたが、私はヘルパーが関わっていないことがわかります。私はこれらについて心配すべきですか? – Jseb

+0

正しい答えをマークしてください! – retro

答えて

17

ドキュメントは古くなっているようです。

、それが正しいパラメータで、それはその場合、既存のモデル大丈夫だ、同じ移行を作成する工夫発電機を使用してみてください:それはこれに似た何かをAddDeviseToCustomers移行

を作成する必要があります

rails g devise customer 

t.confirmable

これ以上はないということ
class AddDeviseToCustomers < ActiveRecord::Migration 
def self.up 
change_table(:customers) do |t| 
    ## Database authenticatable 
    t.string :email,    :null => false, :default => "" 
    t.string :encrypted_password, :null => false, :default => "" 

    ## Recoverable 
    t.string :reset_password_token 
    t.datetime :reset_password_sent_at 

    ## Rememberable 
    t.datetime :remember_created_at 

    ## Trackable 
    t.integer :sign_in_count, :default => 0 
    t.datetime :current_sign_in_at 
    t.datetime :last_sign_in_at 
    t.string :current_sign_in_ip 
    t.string :last_sign_in_ip 

    ## Confirmable 
    t.string :confirmation_token 
    t.datetime :confirmed_at 
    t.datetime :confirmation_sent_at 
    t.string :unconfirmed_email # Only if using reconfirmable 

    ## Lockable 
    # t.integer :failed_attempts, :default => 0 # Only if lock strategy is :failed_attempts 
    # t.string :unlock_token # Only if unlock strategy is :email or :both 
    # t.datetime :locked_at 

    ## Token authenticatable 
    # t.string :authentication_token 


    # Uncomment below if timestamps were not included in your original model. 
    # t.timestamps 
end 

def self.down 
# By default, we don't want to make any assumption about how to roll back a migration when your 
# model already existed. Please edit below which fields you would like to remove in this migration. 
raise ActiveRecord::IrreversibleMigration 
end 
end 

ノート0

+0

私の現在のユーザーは消去されますか? – Jseb

+0

いいえ、自分でダミープロジェクトで試してください:)また、[devise 2.0 document here](https://github.com/plataformatec/devise/wiki/How-To:-Upgrade-to-Devise-2.0)にアクセスできます-migration-schema-style) –

+0

これはうまくいきました。覚えていることを学び、正しく使う必要があります。 – Jseb

関連する問題