在设计自定义上使用rails更新用户字段

时间:2013-02-02 04:46:25

标签: ruby-on-rails ruby ruby-on-rails-3 devise

我正在使用设计,我正在尝试更新额外字段,用户登录。所以为了让我能够更新我的user.longitude我必须在新控制器中创建谁正在执行rails控制器会话。这里是我的代码

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

我知道它不遵循restfull而且它不起作用,但我需要能够更新我的用户字段,我不知道该怎么做,这不会给我任何错误,但它也不会正确修改它。感谢您的帮助

1 个答案:

答案 0 :(得分:0)

你的专栏:

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

如果记录无效且无提示失败,则可能返回false。先检查一下。

其次,您可能需要查看alias_method_chain,而不是复制继承控制器的create操作的内容。

否则,这是在用户登录后更新记录。您应该在登录后保存经度。无论您何时在登录后重定向用户,请让以下呼叫处理经度更新。如果需要生存,那么简单的方法就是将经度存储在会话中。