[英]Is it possible to add devise, if user model already exists?
我們已經在項目開始時創建了一個用戶模型,但是現在(稍后幾次遷移)我們想使用devise gem。 如果用戶模型和表已經存在,是否可以添加設計? 也就是說,是否有可能改變已經完成的工作,或者我們是否必須重新開始?
Cavert Coder,但是:
(注意,
這不會遷移“:lockable”,因為當我寫它時我並不關心它
現在包括:可鎖定因為MattSlay比我更關心:)。 此外,您還需要將用戶密碼遷移到加密密碼字段中。 最后,它可能不適合你。 抱歉。)
class AddDevise < ActiveRecord::Migration
def self.up
null = false
default = ""
add_column :users, :encrypted_password, :string, :null => null, :default => default, :limit => 128
add_column :users, :password_salt, :string
add_column :users, :authentication_token, :string
add_column :users, :confirmation_token, :string
add_column :users, :confirmed_at, :datetime
add_column :users, :confirmation_sent_at, :datetime
add_column :users, :reset_password_token, :string
add_column :users, :remember_token, :string
add_column :users, :remember_created_at, :datetime
add_column :users, :sign_in_count, :integer, :default => 0
add_column :users, :current_sign_in_at, :datetime
add_column :users, :last_sign_in_at, :datetime
add_column :users, :current_sign_in_ip, :string
add_column :users, :last_sign_in_ip, :string
#:lockable fields contributed by MattSlay
add_column :users, :failed_attempts, :integer, :default => 0
add_column :users, :unlock_token, :string
add_column :users, :locked_at, :datetime
end
def self.down
remove_column :users, :encrypted_password
remove_column :users, :password_salt
remove_column :users, :authentication_token
remove_column :users, :confirmation_token
remove_column :users, :confirmed_at
remove_column :users, :confirmation_sent_at
remove_column :users, :reset_password_token
remove_column :users, :remember_token
remove_column :users, :remember_created_at
remove_column :users, :sign_in_count
remove_column :users, :current_sign_in_at
remove_column :users, :last_sign_in_at
remove_column :users, :current_sign_in_ip
remove_column :users, :last_sign_in_ip
remove_column :users, :failed_attempts
remove_column :users, :unlock_token
remove_column :users, :locked_at
end
end
除了Aquarion提供的列表之外,如果您希望在User模型上實現:lockable選項,我想我已經找到了您需要的三個字段:
add_column :users, :failed_attempts, :integer, :default => 0
add_column :users, :unlock_token, :string
add_column :users, :locked_at, :datetime
我做到了 它有點痛苦,但Devise值得。 制作一個虛擬應用程序並進行遷移。 然后看看schema.rb並編寫一些與現有用戶模型做同樣事情的遷移。
或者,您可以通過源讀取並找出“database_authenticateable”之類的定義。 你應該從這里開始。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.