0

我为我的 rails 项目开发 api,现在不知道如何解决这个问题

我使用doorkeepergem 进行身份验证,使用rablgem 进行 json 渲染。而且我必须为登录用户添加一些字段

例如:部分show.rabl

node :accessible, if: lambda { |m| current_user } do |model|
  model.accessible(current_user)
end

并且api/application_controller.rb

def current_user
  User.find(doorkeper_token.resource_owner_id) if doorkeper_token
end

我也尝试过这种方式(rabl文件):

if current_user
   node(:accessible) { |m| m.accessible(current_user) }
else
   {no: "no"} # this line rendered!!
end

并且 rabl 对我的方法一无所知,并在iflambda 中返回 false。我怎么解决这个问题?我准备好接受任何建议。谢谢!

我用rails-3.2.6 doorkeeper-0.4.2 rabl-0.6.13

4

1 回答 1

1

你可以试试:

  • 在控制器中设置实例变量而不是使用current_user
  • 或无论用户是否登录都呈现不同的文件(并使用 rabl partial 以避免重复)

I'm also using rabl and doorkeeper so keep me up to date if you find a good solution ;) I might need to do the same soon.

于 2012-08-15T20:34:44.060 回答