我正在编写一个 Rails 应用程序,就其性质而言,它不能要求用户注册,因此不能使用身份验证作为保护记录的常用手段。(我知道,我知道...)这里的用户信息仅限于电子邮件地址。所以我确实需要一种方法来让我的模型 ID 不可预测,这样其他 ID 就不容易被猜到。(我知道我知道...)
我曾尝试使用像 uuidtools 这样的插件在创建记录时随机化 id,如下所示:
require 'uuidtools'
class Post < ActiveRecord::Base
def before_create()
self.id = OpenSSL::Digest.SHA1.hexdigest(UUID.timestamp_create())
end
end
...起初看起来不错,但有趣的事情发生了。ActiveRecord 有时会尝试在 id 中插入 0 值,我会收到诸如“找不到 id=0 的帖子”等错误...
我已经没有想法了。任何人都可以帮忙吗?谢谢。