我想更改編輯密碼的過程。在編輯密碼頁面上,我有一個字段: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不正確」),但它將填充:具有來自數據庫(「假」)的值的foo字段,而不是用我輸入的值(「測試」)。
我應該重新定義reset_password_by_token或使用我的自定義方法,但想知道是否有更好的方法來解決這個問題?