我想更改编辑密码过程。在编辑密码页面上,我有一个字段:foo,我想检查用户是否正确输入了它。
我创建了 PasswordsController 并覆盖了更新方法,我在其中添加了用于测试 :foo 是否与数据库中相同的代码:
def update
self.resource = resource_class.reset_password_by_token(resource_params)
# this is code that I added
unless self.resource.foo == params[resource_name][:foo]
self.resource.errors.add(:foo, "Foo not correct")
end
if resource.errors.empty?
resource.unlock_access! if unlockable?(resource)
flash_message = resource.active_for_authentication? ? :updated : :updated_not_active
set_flash_message(:notice, flash_message) if is_navigational_format?
sign_in(resource_name, resource)
respond_with resource, :location => after_resetting_password_path_for(resource)
else
binding.pry
respond_with resource
end
end
假设我在 :foo 字段中输入“test”,但在数据库中它的值是“fake”。它将在视图上打印错误(“Foo 不正确”),但它会使用来自数据库的值(“fake”)而不是我输入的值(“test”)填充 :foo 字段。
我应该重新定义 reset_password_by_token 或使用我的自定义方法,但想知道是否有更优雅的方法来解决这个问题?