NoMethodError:未定义的方法“密码”创建用户时
这是我的 User_Controller,普通脚手架
class UsersController < ApplicationController
# GET /users
# GET /users.json
def index
@users = User.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @users }
end
end
# GET /users/1
# GET /users/1.json
def show
@user = User.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @user }
end
end
# GET /users/new
# GET /users/new.json
def new
@user = User.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @user }
end
end
# GET /users/1/edit
def edit
@user = User.find(params[:id])
end
# POST /users
# POST /users.json
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.json { render json: @user, status: :created, location: @user }
else
format.html { render action: "new" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
# PUT /users/1
# PUT /users/1.json
def update
@user = User.find(params[:id])
respond_to do |format|
if @user.update_attributes(params[:user])
format.html { redirect_to @user, notice: 'User was successfully updated.' }
format.json { head :ok }
else
format.html { render action: "edit" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
# DELETE /users/1
# DELETE /users/1.json
def destroy
@user = User.find(params[:id])
@user.destroy
respond_to do |format|
format.html { redirect_to users_url }
format.json { head :ok }
end
end
end
这是我正在处理的用户模型(User.rb):
class User < ActiveRecord::Base
has_and_belongs_to_many :roles
attr_accessible :username, :email, :fname, :lname, :password, :password_confirmation
validates :password, :presence => true,
:confirmation => true,
:length => {:within => 6..30}
end
当我创建这个模型时,我忘记了用户应该有一个“密码”属性。所以我对密码进行了迁移。但从那时起,每当我创建用户时,我都会收到此错误:
NoMethodError: undefined method `password' for #<User:0x00000100b11560>
对于格式不佳感到抱歉
This is my User_Controller, normal scaffold
class UsersController < ApplicationController
# GET /users
# GET /users.json
def index
@users = User.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @users }
end
end
# GET /users/1
# GET /users/1.json
def show
@user = User.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @user }
end
end
# GET /users/new
# GET /users/new.json
def new
@user = User.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @user }
end
end
# GET /users/1/edit
def edit
@user = User.find(params[:id])
end
# POST /users
# POST /users.json
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.json { render json: @user, status: :created, location: @user }
else
format.html { render action: "new" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
# PUT /users/1
# PUT /users/1.json
def update
@user = User.find(params[:id])
respond_to do |format|
if @user.update_attributes(params[:user])
format.html { redirect_to @user, notice: 'User was successfully updated.' }
format.json { head :ok }
else
format.html { render action: "edit" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
# DELETE /users/1
# DELETE /users/1.json
def destroy
@user = User.find(params[:id])
@user.destroy
respond_to do |format|
format.html { redirect_to users_url }
format.json { head :ok }
end
end
end
Here is the User model(User.rb) that im working on:
class User < ActiveRecord::Base
has_and_belongs_to_many :roles
attr_accessible :username, :email, :fname, :lname, :password, :password_confirmation
validates :password, :presence => true,
:confirmation => true,
:length => {:within => 6..30}
end
While I created this model, I forgot that user should have a "password" attribute. So I made a migration for password. But ever since then I keep getting this error whenever I create a user:
NoMethodError: undefined method `password' for #<User:0x00000100b11560>
sorry for the poor formatting
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
将它们标记为属性
更新 11-2015
在当前的 Rails 中,此方法已更改为
attr_accessor
。您不必将确认声明为属性,只需confirmation: true
就足够了。Mark them as attributes
UPDATE 11-2015
With current rails this method has changed to
attr_accessor
. You shouldn't have to declare the confirmation as an attribute, just theconfirmation: true
should suffice.确保用户表中有密码列,登录 mysql 并执行
DESC users
要么您可能错过了运行迁移,要么您的迁移应该有一些问题
Make sure that you have the password column in users table, login to mysql and do
DESC users
Either you might have missed to run migration or your migration should have some problem