从Devise,Ruby on Rails获取用户名

时间:2011-07-30 15:34:32

标签: ruby-on-rails devise

我使用Devise和Basic HTTP Authentication从移动应用程序访问用户区域。当用户在应用程序中输入其详细信息并且它尝试“登录”时(当您使用每个请求发送凭据时,实际上并未使用基本身份验证登录)我希望获得用户信息的响应,例如用户ID和电子邮件。

当我尝试获取资源时,我得到这样的回复:

[
 -
 {
    email: "em...@example.com"
    username: "Example"
 }
 -
  [
  -
  {
     created_at: "2011-07-26T11:30:55Z"
     id: 1
     title: "Test"
     updated_at: "2011-07-26T11:30:55Z"
     user_id: 1
  }
  -
  {
     created_at: "2011-07-26T16:53:26Z"
     id: 2
     title: "Test2"
     updated_at: "2011-07-26T16:53:26Z"
     user_id: 1
  }
 ]
]

所以我在开始时得到了用户对象。但是,我还需要添加用户ID。我不能在项目中使用user_id,因为如果用户没有项目,则不会呈现。

任何提示?

2 个答案:

答案 0 :(得分:3)

您可能需要扩展Devise::SessionsConroller。在您的controllers文件夹中,添加users文件夹,然后添加一个名为sessions_controller.rb的文件,其中包含以下内容:

class Users::SessionsController < Devise::SessionsController
  def new
    super
    render :json => {:id => current_user.id}.to_json
  end
end

your routes.rb

  devise_for  :users, 
              :controllers => {:sessions => 'users/sessions'}

修改

试试这个。从routes.rb中取出该行。在application_controller.rb中添加以下内容:

  # Devise override
  def after_sign_in_path_for(resource) 
    render :json => {:id => resource.id}.to_json
  end

答案 1 :(得分:0)

下午过了一会儿试图找到一个好的答案,我发现了这个:

  

资源:http://rails-bestpractices.com/posts/47-fetch-current-user-in-models

希望它有帮助!