1

我正在为 Ruby on Rails 应用程序使用 Devise 身份验证 gem。当用户通过创建新会话登录时,我想更新我的用户模型中的列。最好的方法是什么?

有没有办法拥有一个更新模型的隐藏字段?

<%= 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 %>
4

1 回答 1

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

于 2012-08-10T09:52:03.897 回答