gpt4 book ai didi

ruby-on-rails - 如何使 Rails 中的模型 ID 不可预测和随机

转载 作者:行者123 更新时间:2023-12-03 12:07:13 25 4
gpt4 key购买 nike

我正在编写一个 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 的帖子”等错误...

我已经没有想法了。任何人都可以帮忙吗?谢谢。

最佳答案

在您的模型中,执行以下操作:

before_create :randomize_id

...

private
def randomize_id
begin
self.id = SecureRandom.random_number(1_000_000)
end while Model.where(id: self.id).exists?
end

关于ruby-on-rails - 如何使 Rails 中的模型 ID 不可预测和随机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/831746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com