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 ?