ruby - 使用 sinatra 和 datamapper 进行延迟注册

标签 ruby validation sinatra datamapper

我的 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 有时验证(例如,对一个帖子请求而不对另一个帖子请求)有时不验证?

最佳答案

查看 http://datamapper.org/docs/validations和“上下文验证”——也许这就是您要找的。

关于ruby - 使用 sinatra 和 datamapper 进行延迟注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4119113/

相关文章:

css - 在 Sinatra 应用程序的 layout.html.erb 中使用 if 语句

ruby - 有没有一种优雅的方法可以从散列中删除特定的键,它是 Ruby 中的子散列

ruby - 使用 ( :send) in Ruby with keyword arguments?

ruby-on-rails - 是否有任何基于可定制模板的 Ruby 或 Rails 报告工具?

validation - 加载到Hadoop MR之前的文件验证

ruby - 如何让 Sinatra 避免添加 X-Frame-Options header ?

ruby-on-rails - 如何从多个地方重定向到上一页?

ruby-on-rails - 错误.full_messages : attribute name appears twice

authentication - minLength 数据验证不适用于 CakePHP 的 Auth 组件

mongodb - 如何使用 Mongoid 执行 $geoIntersects 查询?