我在我的应用中使用annotate并且所有模型都成功注释,但user.rb除外,当我注释时显示以下错误:
无法注释user.rb:参数数量错误(0表示1)
除了注释之外,其他一切都很好。用户创建,更新,删除,登录,注销,一切正常。我已经确定问题出在Digest :: SHA1上,我用它来创建会话令牌,如下面在user.rb的片段中所示。
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
remember_token = User.hash(User.new_remember_token)
end
如果我删除了第二个(def User.hash(令牌))而是执行以下操作:
def User.new_remember_token
SecureRandom.urlsafe_base64
end
private
def create_remember_token
remember_token = Digest::SHA1.hexdigest(User.new_remember_token.to_s)
end
然后annotate很高兴并成功注释user.rb.但是,这不是真正的红宝石方式,因为我的会话助手多次使用User.hash(令牌)调用。我不了解Digest :: SHA1.hexdigest或我使用它的方式是什么?
答案 0 :(得分:0)
您似乎正在通过The Rails Tutorial工作。
您查看User.hash
方法问题的可能原因与Digest::SHA1
无关,但是因为该方法本身无意中覆盖了Ruby Object#hash
方法,它给你一些神秘的错误。 Link to Github issue about it
因此,与this commit to the Sample App repository一样,将User.hash
的所有实例重命名为User.digest
,希望这样可以解决您的错误。