簡體   English   中英

如果用戶模型已存在,是否可以添加設計?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM