【发布时间】:2014-01-13 23:44:36
【问题描述】:
我是 RoR 的新手,在完成了僵尸轨道课程后,我正在尝试自己制作一个正在运行的版本。我目前正在按照本教程 (http://railscasts.com/episodes/250-authentication-from-scratch) 尝试从头开始制作身份验证系统。我知道它是在 Rails 3 中完成的,所以我在将一些东西更改为对 Rails 4 友好时获得了一些乐趣。
但是,在尝试创建用户时,我收到错误“SyntaxError in UsersController#create”指向我的 UsersController 的第 8 行(如果 @user.save)
** 编辑 ** /usr/local/rvm/gems/ruby-2.0.0-p353@global/gems/activesupport-4.0.2/lib/active_support/callbacks.rb:377:语法错误,意外' =',期待')'
错误是说期待一个 ')' 但我有一个 '=' 符号
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
redirect_to root_url, :notice => "Signed up!"
else
render "new"
end
end
private
def user_params
params.require(:user).permit(:username, :email, :password, :salt, :encrypted_password)
end
end
class User < ActiveRecord::Base
attr_accessor :password
validates_presence_of :password, :on =>create # needed to move line up from below to. Cannot encrypt password without validating password
before_save :encrypt_password
validates_confirmation_of :password
validates_presence_of :email
validates_uniqueness_of :email
def encrypt_password
if password.present?
self.password_salt = BCrypt::Engine.generate_salt
self.password_hash = BCrypt::Engine.hash_secret(password, password_salt)
end
end
end
【问题讨论】:
-
您的模型中的
:on =>create只是复制粘贴错误还是真的是这样? -
:on =>create 是模型。需要将其移至 :encrypt_password 方法之前,因为我遇到了错误。
-
尝试从
User类中删除attr_accessor :password...
标签: ruby-on-rails ruby ruby-on-rails-4 rails-activerecord