我正在使用设计&在rails 3项目中devise_invitable,我正在尝试操作设计控制器中的一些“用户”对象字段。
行动的问题是:
def update
self.resource = resource_class.accept_invitation!(params[resource_name])
resource.first_name = 'Lemmechangethis'
if resource.errors.empty?
set_flash_message :notice, :updated
sign_in(resource_name, resource)
respond_with resource, :location => after_accept_path_for(resource)
else
respond_with_navigational(resource){ render_with_scope :edit }
end
end
我原以为(注释掉的)resource.first_name调用会以与模型大致相同的方式影响资源 - 但似乎并非如此。我在此表单上仍然收到“空白”验证错误。
所以,问题是,如何在设计(和/或devise_invitable)中为用户模型指定实际需要验证的值?
任何建议表示赞赏, 约翰
答案 0 :(得分:2)
resource
会返回用户模型实例。因此resource.first_name = 'Lemmechangethis'
语句确实会更改您的用户模型实例,但它不会触发您的用户模型验证,这可能是resource.errors
始终返回空数组的原因。触发用户模型验证的一种方法是调用resource.valid?
。然后,您可以检查resource.errors
数组以获取特定的错误消息。