0 votes

Comment accédez-vous à une variable d'instance dans un bloc de configuration Authlogic ?

Étant donné un modèle utilisateur quelque chose du genre :

class User < ActiveRecord::Base

  acts_as_authentic do |config|
    config.validate_email_field = true
  end

end

J'aimerais pouvoir modifier "true" pour qu'il soit spécifique à l'utilisateur qui s'inscrit. J'aimerais pouvoir faire quelque chose comme :

class User < ActiveRecord::Base

  acts_as_authentic do |config|
    config.validate_email_field = ['dont@validate.me'].include?(instance_email)
  end

end

mais instance_email n'est pas disponible ici. Faut-il remplacer une méthode sur le modèle utilisateur pour accéder à cette variable ? Comment cela peut-il être fait ?

3voto

Simone Carletti Points 77653

Vous ne pouvez pas car le bloc Authlogic est évalué lorsque la classe est chargée et n'a pas de contexte d'instance.

Vous devez écrire votre propre validateur.

class User < ...

  validate :validate_email

  ...

  def validate_email
    if !['dont@validate.me'].include?(instance_email)
      # écrivez ici votre logique de validation
    end
  end 

end

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X