У меня есть пользовательская модель в моем приложении Sinatra, которая требует от пользователя ввести пароль по электронной почте и подтверждение пароля. Что-то вроде этого:
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
Это работает нормально, и все, кроме того, что я хочу иметь возможность создавать пользователя и связывать другие модели с этим пользователем, не вводя пользователем ничего, кроме имени. Через некоторое время пользователь создаст группу и других пользователей, которые также связаны с этой группой.
Затем мне нужно, чтобы пользователь мог ввести адрес электронной почты и пароль и поместить их в созданные поля в базе данных. Я предполагаю, что проверка не произойдет, пока я не сохраню созданный мной объект пользователя, но мне нужно сохранить пользователей в базе данных без адреса электронной почты и пароля, конечно. Если они хотят иметь возможность войти, им нужно будет предоставить информацию необходимость в этом.
Создаю ли я свои собственные методы проверки или есть ли способ заставить DataMapper проверять иногда (например, для одного почтового запроса, но не для другого), а иногда нет?