[英]Rails sha1 hash generator
您好,希望有人能幫助我。 我現在有點卡住。 我正在嘗試為跟蹤系統創建一個應用程序,目前我有一個名為sdel_hashed的表。 到目前為止,在觀看在線視頻之后,我將digest / sha1設置為部分工作。 如果我在控制台中輸入以下命令:
sdel = Sdel.find(1)
sdel.hashed_sdel = Sdel.hash('secret')
sdel.save
然后在瀏覽器中查看記錄,它顯示為哈希而不是秘密,但是如果我嘗試通過新操作輸入“秘密”一詞,則不會被哈希。 我認為create操作中可能缺少一些東西,但是我找不到任何地方的答案。 我將不勝感激任何幫助。 現在,我將包含控制器和模型中的內容。 謝謝
model sdel
require 'digest/sha1'
class Sdel < ActiveRecord::Base
attr_accessible :hashed_sdel
def self.hash(sdel="")
Digest::SHA1.hexdigest(sdel)
end
end
controller sdels
class SdelsController < ApplicationController
def list
@sdel = Sdel.all
end
def new
@sdel = Sdel.new
end
def create
@sdel = Sdel.new(params[:sdel])
if @sdel.save
redirect_to(:action => 'list')
else
render('new')
end
end
end
遷移檔案
class CreateSdels < ActiveRecord::Migration
def change
create_table :sdels do |t|
t.string "hashed_sdel"
t.timestamps
end
end
end
聽起來好像您想在屬性修改后保存之前,使用before_save
過濾器在Sdel
模型上調用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
這樣,如果您的表單的hashed_sdel
屬性具有text_field
,它將自動通過保存記錄之前的hash
類方法運行(假設屬性已更改為先前值)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.