尝试创建新用户时,我在rails控制台中收到此错误:
models/user.rb:32: syntax error, unexpected tSTRING_DEND, expecting ')'
..."#{Time.now.utc} - #{密码}"})if self.new_record?
这是我的模特:
class User < ActiveRecord::Base
attr_accessor :password
attr_accessible :name, :email, :password, :password_confirmation
email_regex = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i
validates :name, :presence => true
validates :email, :presence => true,
:format => { :with => email_regex },
:uniqueness => { :case_senstive => false }
validates :password, :presence => true,
:confirmation => true,
:length => { :within => 6..40 }
before_save :encrypt_password
def has_password?(submitted_password)
encrypted_password == encrypt(submitted_password)
end
def self.authenticate(email, submitted_password)
user = find_by_email(email)
return nil if user.nil?
return user if user.has_password?(submitted_password)
end
private
def encrypt_password
#generate salt for new user
self.salt = Digest::SHA2.hexdigest("#{Time.now.utc}--#{password}"}) if self.new_record?
#encrypt password; store in encrypted_password
self.encrypted_password = encrypt_password
end
#encrypt with salt
def encrypt(pass)
Digest::SHA2.hexdigest("#{self.salt}--#{pass}")
end
端
我不确定错误,但是控制台确实指向 - #{密码}&#34;}后面的括号 ^
答案 0 :(得分:2)
您在字符串
的末尾有一个额外的}
符号
答案 1 :(得分:2)
self.salt = Digest::SHA2.hexdigest("#{Time.now.utc}--#{password}"}) if self.new_record?
用这个替换上面的
self.salt = Digest::SHA2.hexdigest("#{Time.now.utc}--#{password}") if self.new_record?
答案 2 :(得分:1)
更改方法
def encrypt_password
#generate salt for new user
self.salt = Digest::SHA2.hexdigest("#{Time.now.utc}--#{password}") if self.new_record?
#encrypt password; store in encrypted_password
self.encrypted_password = encrypt_password
end
语法错误
self.salt = Digest::SHA2.hexdigest("#{Time.now.utc}--#{password}"}) if self.new_record?
应该是
self.salt = Digest::SHA2.hexdigest("#{Time.now.utc}--#{password}") if self.new_record?
你已经给了额外的&#39;}&#39;