在第八章中接触到了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
就是这一个简单的问题导致进度拖慢,实属不应该,但是这个问题在我开发的过程中,也算是一个普遍的问题了。
那怎么解决或者说避免这个问题呢,
要细心。
还有就是以后碰到比较难解决的问题很有可能就是一些简单的错误导致的,要仔细的寻找错误。