8

Farklı bir kullanıcıyla varolan bir veritabanına nasıl ekleyebileceğimi merak ediyorum. Burada bir müşteri modelim var zaten tanımla ve üzerinde çalışmasına izin vermek için değiştirmek istiyorum.Varolan model/veritabanından yükleme yükleme

Ben yeni göç oluşturulan ve eklenen kod çalışması gerekir Buna göre

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 

izleyin sahiptir var. https://github.com/plataformatec/devise/wiki/How-To:-change-an-already-existing-table-to-add-devise-required-columns. tırmık db çalıştırırken Ama: i ben bir sebep var vasiyetle bunu tanımayacaktır aşağıdaki satırı

rails g devise:install 

yayınlanmış olan

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

şu olsun göç i müşterisidir söyleyecek bir şey yapmam gerekiyor bir düzenleme mi? Önceden teşekkürler

+0

Gemfile'a "devise" gem eklediniz ve daha sonra "bundle install" komutunu çalıştırdınız mı? sadece bir onay :) –

+0

evet yaptım, ama ben yardımcı herhangi bir yardımcı olduğunu görüyorum. bunlar için endişelenmeli miyim? – Jseb

+0

Doğru cevabı işaretle! – retro

cevap

17

Belgelerin güncel olmadığı anlaşılıyor.

, doğru parametrelerle, bu eğer onun varolan modeli Tamam, aynı taşıma işlemini yaratacak vasiyetle jeneratör kullanmayı deneyin: Bu şuna benzer bir şey ile AddDeviseToCustomers göçü

oluşturmalısınız

rails g devise customer 

:

artık olmadığını
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 

not t.confirmable

+0

Woudl mevcut kullanıcımı siliyor mu? – Jseb

+0

Hayır. Kendini kukla bir projede deneyin :) Ayrıca, buradan [2.0 belgesini buradan indirebilirsiniz] (https://github.com/plataformatec/devise/wiki/How-To:-Upgrade-to-Devise-2.0 -mult-schema-style) –

+0

Teşekkürler şimdi çalışıyor ve düzgün bir şekilde kullanmam gerektiğini öğreniyorum. – Jseb

İlgili konular