パスワードハッシュ部分については、このスクリーンキャストhttp://railscasts.com/episodes/250-authentication-from-scratchをご覧ください。
同じスクリーンキャストで、ユーザーを認証する方法を確認できます。あなたの場合、パスワードを使用して認証したいだけです。
class SomeModelWithPassword < ActiveRecord::Base
attr_accessible :password
attr_accessor :password
before_save :encrypt_password
validates_presence_of :password, :on => :create
def correct_password?(password_try)
password_hash == BCrypt::Engine.hash_secret(password_try, password_salt)
end
def encrypt_password
if password.present?
self.password_salt = BCrypt::Engine.generate_salt
self.password_hash = BCrypt::Engine.hash_secret(password, password_salt)
end
end
end
破棄アクションでは、正しいパスワードかどうかを確認するだけです
def destroy
@model = SomeModelWithPassword.find(params[:id])
if @model.correct_password? params[:password]
@model.destroy
else
...
end
end