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 に答える