【问题标题】:Syntax error in Rails User Model?Rails 用户模型中的语法错误?
【发布时间】:2016-09-03 07:43:14
【问题描述】:

我在尝试创建新用户时在 Rails 控制台中收到此错误:

models/user.rb:32: syntax error, unexpected tSTRING_DEND, expecting ')'

..."#{Time.now.utc}--#{password}"})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

结束

我不确定错误,但控制台确实指向 --#{password}"} 之后的括号) ^

【问题讨论】:

    标签: ruby-on-rails ruby syntax model


    【解决方案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?
      

      【讨论】:

        【解决方案3】:

        改变你的方法

        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?
        

        你给了一个额外的'}'

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-08-24
          • 1970-01-01
          • 2010-11-04
          • 2021-07-17
          • 2017-10-07
          • 2014-06-17
          • 1970-01-01
          相关资源
          最近更新 更多