Ленивая регистрация с sinatra и datamapper - PullRequest
2 голосов
/ 07 ноября 2010

У меня есть пользовательская модель в моем приложении 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 проверять иногда (например, для одного почтового запроса, но не для другого), а иногда нет?

1 Ответ

2 голосов
/ 08 ноября 2010

Проверьте http://datamapper.org/docs/validations и "Контекстные проверки" - возможно, это то, что вы ищете.

...