【问题标题】:Ruby on Rails + devise: How can i create customize users table with devis rake db:migrate?Ruby on Rails + devise:如何使用 devis rake db:migrate 创建自定义用户表?
【发布时间】:2011-10-08 03:03:20
【问题描述】:

rails generate devise User 我得到了这个=>

class DeviseCreateUsers < ActiveRecord::Migration
  def self.up
    create_table(:users) do |t|
      t.database_authenticatable :null => false
      t.recoverable
      t.rememberable
      t.trackable

      # t.encryptable
      # t.confirmable
      # t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
      # t.token_authenticatable


      t.timestamps
    end

    add_index :users, :email,                :unique => true
    add_index :users, :reset_password_token, :unique => true
    # add_index :users, :confirmation_token,   :unique => true
    # add_index :users, :unlock_token,         :unique => true
    # add_index :users, :authentication_token, :unique => true
  end

  def self.down
    drop_table :users
  end
end

但我想创建一个包含用户名、电子邮件、密码、角色、组、标记、created_at、modified_at 列的用户表。

我该怎么做?

这个结构是否正确包含用户名、密码、电子邮件、组、角色、标记?

class DeviseCreateUsers < ActiveRecord::Migration
  def self.up
    create_table(:users) do |t|
      t.database_authenticatable :null => false
      t.recoverable
      t.rememberable
      t.trackable

      # t.encryptable
      # t.confirmable
      # t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
      # t.token_authenticatable

      t.string :username
      t.string :password
      t.string :email
      t.string :group
      t.string :role
      t.integer :mark

      t.timestamps
  end

    add_index :users, :email,                :unique => true
    add_index :users, :reset_password_token, :unique => true
    # add_index :users, :confirmation_token,   :unique => true
    # add_index :users, :unlock_token,         :unique => true
    # add_index :users, :authentication_token, :unique => true
  end

  def self.down
    drop_table :users
  end
end

这些是什么?

t.database_authenticatable :null => false
          t.recoverable
          t.rememberable
          t.trackable

【问题讨论】:

    标签: ruby-on-rails devise ruby-on-rails-3.1


    【解决方案1】:

    您可以执行迁移以将一些字段添加到用户表。 例如:

    rails g add_fields_to_users username:string # as well as other fields you need
    

    然后,为了将列添加到您的表运行:

    rake db:migrate
    

    Devise 已经生成了一些您需要的列,例如:电子邮件、密码、created_at、updated_at...

    要为您的用户模型添加角色,您应该观看 cancan 截屏视频:railscasts 并阅读 doc 以查看一些更新。

    编辑:

    如果您想手动添加字段,您可以在运行迁移之前将它们添加到您的 self.up 方法中:

    def self.up
      create_table(:users) do |t|
    
        #...
    
        t.rememberable
        t.trackable
    
        t.string :username
        #... your other attributes here
    
      end
    

    【讨论】:

    • 我不想从命令行或终端添加列,如何编辑该文件以包含这些列?您可以发布您编辑的 DeviseCreateUsers 文件吗?
    • 不是真的 :) 您必须查看设计文档才能了解哪些模块适合您。 (您也可以阅读 rails 3 in action 书中的内容,其中解释了每个设计模块)使用 devise_authenticable 您已经设置了密码和电子邮件字段,因此您只需添加用户名和其他字段。
    • 您还可以通过数据库浏览器查看设计生成的字段。可能有用 设计文档在那里:github.com/plataformatec/devise
    • 密码和电子邮件字段在哪里设置?我如何确定电子邮件和密码已设置。我在迁移文件中没有看到那些电子邮件和密码字段。
    • 据我所知,这显然更高,但您可以查看这些负责设置您的电子邮件和密码的文件:github.com/plataformatec/devise/blob/master/lib/devise/models/…github.com/plataformatec/devise/blob/master/lib/devise/models/…
    猜你喜欢
    • 1970-01-01
    • 2011-12-03
    • 2013-12-28
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    相关资源
    最近更新 更多