2012-08-10 105 views
1

我正在爲Ruby on Rails應用程序使用Devise身份驗證gem。當用戶通過創建新會話登錄時,我想更新我的用戶模型中的一列。什麼是最好的方法來做到這一點?通過Devise會話登錄更新用戶模型屬性

有什麼辦法讓隱藏字段更新模型?

<%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %> 
    <div><%= f.label :email %><br /> 
    <%= f.email_field :email %></div> 

    <div><%= f.label :password %><br /> 
    <%= f.password_field :password %></div> 

    <% if devise_mapping.rememberable? -%> 
    <div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div> 
    <% end -%> 

    <% f.hidden_field :field_a, :value => 'test' %> 

    <div><%= f.submit "Sign in" %></div> 
<% end %> 

回答

1

您可以通過覆蓋Devise :: SessionsController創建方法來實現此目的。當用戶登錄時它只會驗證用戶,它不會更新用戶記錄。因此,有沒有使用保持在表單的隱藏字段的

嘗試這樣

class Users::SessionsController < Devise::SessionsController 

def create 
#do your update here 
end 

end 

否則,你可以按照這個鏈接http://denmarkin.tumblr.com/post/5194645960/how-to-overwrite-devise-sessions-controller-in-rails-3

+0

感謝。我試過你的解決方案。我的路線是:'devise_for:users,:controllers => {:sessions =>:sessions}',我有一個'sessions_controller.rb',並且在我的視圖中也創建了會話文件夾。在新會話文件夾中,我更改了文本以查看它是否正確工作。新的會話視圖正確顯示,但是當我嘗試登錄時,我得到一個路由錯誤:'路由錯誤沒有路由匹配[POST]「/sign_in.user」任何想法? – diasks2 2012-08-10 11:34:49

+0

我想你使用的是「class Users :: SessionsController PradeepKumar 2012-08-10 11:41:30

+0

謝謝, – diasks2 2012-08-10 11:56:29