Rails迁移文件未向Mysql数据库添加列
我试图在Rails中创建一个登录系统,但是,当我转到注册页面时,我得到一个错误:“未定义的方法` first_name'for#”。我检查了我的用户数据库中的“first_name”列,发现“users”表中只有“id”、“created_at”和“updated_at”列。我使用rails new appname-d mysql创建了我的应用程序,我有mysql2 gem,我更新了databases.yml文件,我运行了“rake db:migrate”。不过,一切都不管用。我怎样才能解决这个问题?这是我的用户控制器:Rails迁移文件未向Mysql数据库添加列,mysql,ruby-on-rails,ruby,Mysql,Ruby On Rails,Ruby,我试图在Rails中创建一个登录系统,但是,当我转到注册页面时,我得到一个错误:“未定义的方法` first_name'for#”。我检查了我的用户数据库中的“first_name”列,发现“users”表中只有“id”、“created_at”和“updated_at”列。我使用rails new appname-d mysql创建了我的应用程序,我有mysql2 gem,我更新了databases.yml文件,我运行了“rake db:migrate”。不过,一切都不管用。我怎样才能解决这个
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
session[:user_id] = @user.id
redirect_to '/login'
else
redirect_to '/signup'
end
end
private
def user_params
params.require(:user).permit(:first_name, :last_name, :email, :password)
end
end
这是我的模型:
class User < ApplicationRecord
has_secure_password
end
class用户
这是我的迁移文件:
class CreateUsers < ActiveRecord::Migration[5.0]
def change
create_table :users do |t|
t.string :first_name
t.string :last_name
t.string :email
t.string :password_digest
t.timestamps
end
end
end
class CreateUsers
以下是我的看法:
<div class="login">
<div class="container">
<div class="form">
<h1>Sign up</h1>
<%= form_for(@user) do |f| %>
<%= f.text_field :first_name, :placeholder => "First name" %>
<%= f.text_field :last_name, :placeholder => "Last name" %>
<%= f.email_field :email, :placeholder => "Email" %>
<%= f.password_field :password, :placeholder => "Password" %>
<%= f.submit "Create an account", class: "btn-submit" %>
<% end %>
</div>
</div>
</div>
注册
“名字”%>
“姓氏”%>
“电子邮件”%>
“密码”%>
我正在Ubuntu 16.04上使用Rails 5.0.2,您可能想尝试使用db:migrate:redo重新进行迁移,如果不起作用,请创建一个新的迁移,添加相应的列
class CreateUsers < ActiveRecord::Migration[5.0]
def change
add_column :products, :part_number, :string
add_column :products, :price, :decimal
end
end
class CreateUsers
您能尝试重新迁移(db:migrate:redo)上次迁移吗?我尝试了,结果成功了。非常感谢。
class CreateUsers < ActiveRecord::Migration[5.0]
def change
add_column :products, :part_number, :string
add_column :products, :price, :decimal
end
end