这是我的用户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
答案 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