Rails用户模型中的语法错误?

时间:2016-09-03 07:43:14

标签: ruby-on-rails ruby syntax model

尝试创建新用户时,我在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;}后面的括号                          ^

3 个答案:

答案 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;