繁体   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