SHA ID未正确保存到DB

时间:2014-07-29 05:33:08

标签: ruby-on-rails digest

我有一个"用户"我希望为电子邮件帐户验证提供唯一页面的模型。我通过根据用户ID生成SHA ID来构建验证路由的唯一参数。

然而,数据库值和视图打印值不匹配。我认为它与编码有关,但我无法找到解决方案。

"用户" model包含以下代码:

after_initialize :init

def init
    unique_path = Digest::SHA1.hexdigest(self.id.to_s)
    unique_path.force_encoding(Encoding::UTF_8) #didn't seem to work
    self.email_verification_path = unique_path
end

该视图包含:

<p>
    <strong>Email verification url?</strong>
    <%= @user.email_verification_path %>
</p>

任何指导都将不胜感激。提前谢谢!

1 个答案:

答案 0 :(得分:0)

在after_initialize挂钩上运行此函数无法生成正确的哈希,因为该ID尚不可用。将函数设置为在“before_save”或“after_create”上运行。