Rails3:类方法身份验证



我有一个简单的授权函数,但要正确实现它,我遇到了困难。每个帖子在创建时都会发出一个:key_code,用户(非会话用户)可以键入代码并删除他们的帖子。问题是,无论他们为key_code键入什么,对象都会被传递。

为什么总是返回0?

    field :key_code, type: Integer
    def self.auth(id, key_code)
        post = Post.where(:id => id).first
        puts key_code        #for testing:
        puts post.key_code   #for testing: 
        if post.key_code == key_code
          return 1
        else
          return 0
        end
end

控制台测试:

1.9.3p194 :001 > a = Post.auth('5032f3254ff9fcf10100001b','42745590875')
42745590875
42745590875
=> 0 

看起来您使用的是赋值运算符(=)而不是等式(==)。将该行更改为:

if post.key_code == key_code

我得到了它。它还将第二个数字作为字符串传递!Doh

最新更新