2 votes

Inscription rapide avec sinatra et datamapper

J'ai un modèle utilisateur dans mon application Sinatra qui nécessite que l'utilisateur saisisse un e-mail, un mot de passe et une confirmation du mot de passe. Quelque chose dans ce sens :

class User
  include DataMapper::Resource

  property :id,                 Serial
  property :email,              String, :required => true, :unique => true, :format  => :email_address,
  property :name,               String
  property :hashed_password,    String
  property :salt,               String  
  property :created_at,         DateTime

  attr_accessor :password, :password_confirmation

  validates_presence_of     :password_confirmation
  validates_presence_of     :password
  validates_length_of       :password, :min => 6
  validates_confirmation_of :password
end

Cela fonctionne bien sauf que je veux pouvoir créer un utilisateur et associer d'autres modèles à cet utilisateur sans que l'utilisateur entre autre chose qu'un nom. Après un certain temps, l'utilisateur aura créé un groupe et d'autres utilisateurs qui sont également associés à ce groupe. Ensuite, j'ai besoin que l'utilisateur puisse saisir une adresse e-mail et un mot de passe et mettre ces informations dans les champs créés dans la base de données. J'imagine que la validation ne se produit pas tant que je n'ai pas enregistré l'objet utilisateur que j'ai créé, mais j'ai besoin d'enregistrer les utilisateurs dans la base de données sans l'e-mail et le mot de passe bien sûr. S'ils veulent pouvoir se connecter, ils devront fournir les informations nécessaires à cela.

Dois-je créer mes propres méthodes de validation ou y a-t-il un moyen de faire en sorte que DataMapper valide parfois (par exemple, pour une requête POST mais pas pour une autre) et parfois non ?

2voto

solnic Points 3834

Découvrez http://datamapper.org/docs/validations et "Validations contextuelles" - peut-être que c'est ce que vous cherchez.

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