【发布时间】:2014-02-19 16:31:09
【问题描述】:
我正在使用 Rails 3.2.16、devise 和 mongoid(可能与此问题相关的 Gems)。
用户注册后,我设计了重定向他们以创建一个新的个人资料,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 方法 - 因此调用了验证错误。
我该如何解决这个问题?归根结底,我想要两件事:
-在用户能够编辑他们的个人资料之前,使用一些默认值填充个人资料
- 在配置文件编辑页面的第一个视图上,不应该运行验证(因此用户在他们做任何事情之前都不会看到一堆错误)。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 validation devise