我有一个简单的授权函数,但要正确实现它,我遇到了困难。每个帖子在创建时都会发出一个: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