Rails db没有添加带迁移的新列

时间:2013-06-27 07:46:16

标签: ruby-on-rails ruby-on-rails-3.2

这是我的用户model.rb

class User < ActiveRecord::Base
    attr_accessor :password
  attr_accessible :email, :name

  validates :name,:presence=>true,:length=>{:maximum=>15}
    validates :email,:presence=>true,:length=>{:maximum=>15}
end

我想添加一个新的密码列。 我用了命令

rails g migration pass_mig password:string

然后

rake db:migrate

但仍在db模式中

ActiveRecord::Schema.define(:version => 20130627073430) do

      create_table "users", :force => true do |t|
        t.string   "name"
        t.string   "email"
        t.datetime "created_at", :null => false
        t.datetime "updated_at", :null => false
      end
end

同样在Rails控制台中:密码不能添加到新的User对象中,即在新的数据库条目中。请建议。 P.S:我是铁杆新手所以这可能是一个愚蠢的问题。我使用的是rails版本:3.2.13和ruby版本:1.9.3

2 个答案:

答案 0 :(得分:6)

好吧,这是关于每个人都在谈论的铁轨的“神奇”事情之一。当您执行迁移以向表添加列时,有一个命名约定。试试这个:

rails g migration add_password_to_users password:string

几乎所有事情都有重要的命名约定。

答案 1 :(得分:0)

您可以按照以下

添加独立迁移
rails generate migration AddPasswordToUsers password:string

要获得更多独立迁移,您可以点击此链接。 http://guides.rubyonrails.org/migrations.html#creating-a-standalone-migration

或者你可以做另一件事。 1创建迁移

rails g migration AddColumnToUser

这将在db / migrate中创建迁移文件。您需要更改该文件内容。

class AddColumnToUser < ActiveRecord::Migration
  def change
    # all the codes being generated automatically. The following you need to write.
    add_column :users, :password, :string   # this means you are adding password having string type in users table.
  end
end

完成上述步骤之一后。只需rake db:migrate