如何为用户创建的所有记录创建哈希值?

时间:2016-12-01 14:47:28

标签: ruby-on-rails ruby hash

在我们的Rails应用程序中,用户(或我们代表他)加载一些数据,甚至使用crud手动插入。

在此步骤之后,用户必须验证所有配置(数据)和"接受并同意"这一切都是正确的。

在某一天,应用程序将根据配置执行一些任务。

今天,我们已经开始了#34;冻结"标志,我们可以在哪里阻止数据的变化,这样用户就不会搞砸了......

但是我们也想做一些像哈希数据这样的事情并说出像#34;你的配置被冻结,哈希是34FE00 ......"。

这将使用户确定系统正在使用他批准的配置运行。

我们怎么能这样做?有7或8个表。创建的记录总数约为2k或3k。

批准后如何散列数据以检测更改?你会怎么做?

我正考虑在每个表中执行find_by_user,循环所有记录并使用一些字段(或全部)来构建字符串并在当前循环结束时对其进行哈希处理。

在循环所有表之后,我将有8个哈希字符串,并将连接并在最终哈希中散列它们。

它看起来怎么样?有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这是一个可能的实现。只需将object定义为您想要散列的所有内容的数组:

require 'digest/md5'

def validation_hash(object, len = 16)
  Digest::MD5.hexdigest(object.to_json)[0,len]
end

puts validation_hash([Actor.first,Movie.first(5)])
# => 94eba93c0a8e92f8
# After changing a single character in the first Actors's biography :
# => 35f342d915d6be4e