Rails中的验证问题

时间:2014-02-19 16:31:10

标签: ruby-on-rails ruby ruby-on-rails-3 validation devise

我正在使用Rails 3.2.16,设计和mongoid(此问题的可能相关宝石)。

用户注册后,我已设计重定向他们以创建新的个人资料belongs_to :user。我正在使用以下设计覆盖:

  def after_sign_up_path_for(resource)
    new_profile_path
  end

在个人资料中,我在各个地方调用验证,例如validates :biz_name, :on => :update, :presence => {:message => 'Business name cannot be blank'}

当用户注册后加载new_profile_path时,他们会立即在我称之为验证的字段上获得验证错误。起初我很难过,因为根据我上面的代码,我只在update上调用验证。因此,为什么验证运行没有意义。

无论如何,我追踪到了我的错误。我的个人资料模型中有一些字段具有默认值,例如field :position_order, :type => Integer, :default => 1。看起来好像首先使用这些默认值创建配置文件,然后在向用户显示进行编辑时,它实际上是被调用的update方法 - 因此调用验证错误。

我该如何解决这个问题?在一天结束时,我想要两件事:

- 在用户能够编辑其个人资料之前,使用一些默认值填充个人资料 - 在配置文件编辑页面的第一个视图中,不应运行验证(因此用户在完成任何操作之前不会看到一堆错误)。

1 个答案:

答案 0 :(得分:0)

嗯,我会说你应该重新考虑这些要求。什么用途有无效的默认值?

您还可以提供前端行为来指导用户使用HTML或Javascript更正输入。