1

我希望在从 Rails 模型输出之前对电子邮件地址进行 MD5 哈希处理。目前我的模态看起来像这样:

class Comment < ActiveRecord::Base
    belongs_to :post
    attr_accessible :body, :name, :reply, :email
    validates_presence_of :body, :name

    def gravator
        require 'digest/md5'

        email_address = self.email.downcase

        # create the md5 hash
        hash = Digest::MD5.hexdigest(email_address)

        # compile URL which can be used in <img src="RIGHT_HERE"...
        self.email = "http://www.gravatar.com/avatar/#{hash}"

    end
end

我想知道将电子邮件字段转换为从 gravator 方法输出的 URL 的最佳方法是什么。

谢谢你的帮助!

4

2 回答 2

0

与其每次都对其进行散列,不如在数据库中创建一个包含散列值的新字段。

于 2013-03-04T12:31:53.543 回答
0

创建一个gravator字段并将其分配给before_save. 这将加快速度,并且不会在每次显示时调用数据库。

class Comment < ActiveRecord::Base
    belongs_to :post
    attr_accessible :body, :name, :reply, :email
    validates_presence_of :body, :name
    before_save :set_gravator

    def set_gravator
        require 'digest/md5'

        email_address = self.email.downcase

        # create the md5 hash
        hash = Digest::MD5.hexdigest(email_address)

        # compile URL which can be used in <img src="RIGHT_HERE"...
        self.gravator = "http://www.gravatar.com/avatar/#{hash}"
    end
end
于 2013-03-04T15:26:59.593 回答