我正在使用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
方法 - 因此调用验证错误。
我该如何解决这个问题?在一天结束时,我想要两件事:
- 在用户能够编辑其个人资料之前,使用一些默认值填充个人资料 - 在配置文件编辑页面的第一个视图中,不应运行验证(因此用户在完成任何操作之前不会看到一堆错误)。
答案 0 :(得分:0)
您还可以提供前端行为来指导用户使用HTML或Javascript更正输入。