Ruby on Rails Tutorial 学习笔记 --第八章 登录和退出

在第八章中接触到了session,

在用户登陆到数据库之前要先执行一段创建token的代码

before_create :create_remeber_token

这里用到了回调函数,会在User.create之前调用create_remeber_token

所以我们在app/models/user.rb中加入一下函数。

create_remeber_token定义成私有的。


  def User.new_remember_token
    SecureRandom.urlsafe_base64
  end

  def User.hash(token)
    Digest::SHA1.hexdigest(token.to_s)
  end

  private

    def create_remember_token
      self.remember_token = User.hash(User.new_remember_token)
    end

$ bundle exec rspec spec/models/user_spec.rb

但是在测试的时候会出现

Failure/Error: before { @user.save }
     NoMethodError:
       undefined method `remeber_token=' for #<User:0xd0d8b50>

method找不到,我不知道是不是定义的似有方法有问题,感觉是没有调用到私有方法似的。

关于似有方法的使用还不太熟悉,要多学习一下。

2014/09/17 22:00:00

之前猜测的私有方法导致这个问题是错误的。

正确的原因是

create_remeber_token的拼写错误,正确的拼写应该是create_remember_token

就是这一个简单的问题导致进度拖慢,实属不应该,但是这个问题在我开发的过程中,也算是一个普遍的问题了。

那怎么解决或者说避免这个问题呢,

要细心。

还有就是以后碰到比较难解决的问题很有可能就是一些简单的错误导致的,要仔细的寻找错误。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值