Ruby on rails Rails sha1哈希生成器

Ruby on rails Rails sha1哈希生成器,ruby-on-rails,hash,sha1,digest,Ruby On Rails,Hash,Sha1,Digest,嗨,希望有人能帮我。我现在有点困了。我正在尝试为跟踪系统创建一个应用程序,目前我有一个名为sdel_hashed的表。在在线视频之后,我设置了digest/sha1部分工作。如果在控制台中输入以下命令: sdel = Sdel.find(1) sdel.hashed_sdel = Sdel.hash('secret') sdel.save 然后在浏览器中查看记录,它显示为散列而不是机密,但是如果我尝试通过新操作输入单词secret,它不会被散列。我认为在创造动作中可能缺少了一些东西,但我在任何

嗨,希望有人能帮我。我现在有点困了。我正在尝试为跟踪系统创建一个应用程序,目前我有一个名为sdel_hashed的表。在在线视频之后,我设置了digest/sha1部分工作。如果在控制台中输入以下命令:

sdel = Sdel.find(1)
sdel.hashed_sdel = Sdel.hash('secret')
sdel.save
然后在浏览器中查看记录,它显示为散列而不是机密,但是如果我尝试通过新操作输入单词secret,它不会被散列。我认为在创造动作中可能缺少了一些东西,但我在任何地方都找不到答案。我将非常感谢任何帮助。现在,我将在控制器和模型中包含我所拥有的。 谢谢

modelsdel
需要“摘要/sha1”
类Sdel'list')
其他的
呈现('新')
结束
结束
结束
迁移文件

class CreateSdels < ActiveRecord::Migration
  def change
    create_table :sdels do |t|
      t.string "hashed_sdel"
      t.timestamps
    end
  end
end
class CreateSdels
听起来,当属性被修改时,您可能希望在保存前使用
保存
过滤器调用
Sdel
模型上的
哈希
类方法。也许是这样的:

require 'digest/sha1'

class Sdel < ActiveRecord::Base
  attr_accessible :hashed_sdel

  before_save { self.hashed_sdel = self.class.hash(hashed_sdel) if hashed_sdel_changed? }

  def self.hash(sdel="")
    Digest::SHA1.hexdigest(sdel)
  end
end
需要“摘要/sha1”
类Sdel
这样,如果您有一个表单,它的
hash\u sdel
属性有一个
text\u字段
,那么在保存记录之前,它将自动通过您拥有的
hash
类方法运行(假设该属性已从以前的值更改)

require 'digest/sha1'

class Sdel < ActiveRecord::Base
  attr_accessible :hashed_sdel

  before_save { self.hashed_sdel = self.class.hash(hashed_sdel) if hashed_sdel_changed? }

  def self.hash(sdel="")
    Digest::SHA1.hexdigest(sdel)
  end
end