鳩舎

レースしない

Rails Model User Password Hex

ユーザー登録とか、パスワードとか、あの辺ですが、パスワードをハッシュ化する処理をコントローラーに埋め込むと、後々の修正が大変面倒になります。

なので、適当にモデルに持たせたいのですが、モデルでハッシュ化するとどこでハッシュ化しようという問題があります。

そんな時は before_save とかのフィルタを使いましょう

class User
  include Mongoid::Document

  field :password, type: String

  before_save :crypting_password

  private
  def crypting_password
    if self.password_changed?
      self.password = self.password.crypt("salt")
    end
    true
  end
end

Mongoidを使う時の実装ですが、ActiveRecordでも似たように実装できると思います。