Ruby on Rails +设计:如何使用devis rake db:migrate创建自定义用户表?

时间:2011-10-08 03:03:20

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

rails generate devise用户我得到了这个=>

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

1 个答案:

答案 0 :(得分:3)

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

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

然后,为了向表运行添加列:

rake db:migrate

Devise已经生成了一些你需要的列:email,password,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