2010-05-21 4 views
0

Je construis une application RoR 3, une communauté. Il a un modèle d'utilisateur et quelques champs.Valider le mot de passe lors du changement de certains champs dans RoR

Donc quand un utilisateur met à jour un certain champ, comme son anniversaire, je veux valider que l'utilisateur a tapé le mot de passe qui est le même dans la base de données. De cette façon, je sais que c'est le bon utilisateur qui essaie de changer l'anniversaire. Donc, je vous demande comment je peux créer un tel validateur.

Aussi je voudrais pouvoir spécifier un tableau de quels champs l'utilisateur doit valider le mot de passe pour changer.

Répondre

1

C'est en fait assez facile à faire une fois que vous êtes familiarisé avec le framework Rails.

modèles/User.rb
class User < ActiveRecord::Base 
    validate :correct_password?, :if => :check_password? 

    def check_password? 
    [birthday_changed?, other_field_changed?].any? 
    end 

    def correct_password? 
    # without knowing more about how you store the password 
    # this probably won't work with your code directly 
    errors.add_to_base("Must provide password") unless password? 
    errors.add_to_base("Incorrect password") unless password == User.find_by_id(id).password 
    end 
end 
+0

est génial! Merci! – Lisinge

0

Même si l'authentification et l'autorisation des utilisateurs ne sont pas difficiles, je vous conseille d'utiliser des gems/plugins "AuthLogic" ou "Devise" qui couvriront probablement 90% des fonctionnalités dont vous avez besoin. Vous pouvez toujours personnaliser/ajouter de nouvelles fonctionnalités si nécessaire.

De tels plugins feront le plus gros du travail: créer un MVC, créer une base de données, effectuer des contrôles de sécurité, et même récupérer un mot de passe.

+0

Bit je veux le faire moi-même :) Ce – Lisinge

Questions connexes