I'm using devise & devise_invitable in a rails 3 project, and I'm trying to manipulate some of the 'User' object fields in the devise controller.
The action is question is this:
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
I'd have thought that the (commented out) resource.first_name call would influence resource in much the same way as a model - but it doesn't seem to. I'm still getting a 'blank' validation error on this form.
So, the question is, how do I specify values to the User model in devise (a开发者_StackOverflow社区nd/or devise_invitable) that will actually be subject to verification?
Any suggestions appreciated, John
resource
does return a User models instance. So the resource.first_name = 'Lemmechangethis'
statement does change your User models instance but it doesnot trigger your User models validations, which is probably why resource.errors
always returns an empty array. One way to trigger the User models validation is to call resource.valid?
for example. You can then check the resource.errors
array for specific error messages.
精彩评论