2013-02-02 93 views
1

我正在使用設計,我想更新額外的字段有用戶登錄。所以爲了我能夠更新我的user.longitude我必須在新的控制器中創建誰正在代理軌道控制器會議。下面的代碼我有更新用戶字段與導軌設計自定義

class MysessionsController < Devise::SessionsController 
    def create 
    self.resource = warden.authenticate!(auth_options) 
    set_flash_message(:notice, :signed_in) if is_navigational_format? 
    sign_in(resource_name, resource) 
    self.resource.longitude = params[:longitude] 
    self.resource.update_attributes(params[:longitude]) 
    respond_with resource, :location => after_sign_in_path_for(resource) 

    end 
end 

我知道這不符合REST風格,它不工作,但我需要能夠更新我的用戶領域,我不知道該怎麼辦,這不給我有什麼不對,但它也不能正確修改它。感謝所有幫助

回答

0

你行:

self.resource.update_attributes(params[:longitude]) 

也可能返回false如果該記錄是無效的,靜默失敗。先檢查一下。其次,您可能想查看一下alias_method_chain,而不是複製繼承控制器的創建操作的內容。

否則,這是在用戶登錄後更新記錄。您應該在登錄後保存經度。無論您在登錄後重定向用戶,請讓以下呼叫處理經度更新。如果它需要生存,簡單的方法可能是在會話中存儲經度。

+0

你是什麼意思,如果它是無效的?或靜默失敗 – Jseb

+0

update_attributes的返回值爲true或false。如果它會失敗,那將是錯誤的。你的記錄不會被更新,但它仍然會繼續。看看這裏:http://apidock.com/rails/ActiveResource/Base/update_attributes – mathieugagne

+0

謝謝,我想我發現我的錯誤,這是有益的謝謝 – Jseb