0

Rails プロジェクトの API を開発していますが、この問題を解決する方法がわかりません。

doorkeeper認証には gemを使用rablし、json レンダリングには gem を使用します。そして、ログインしたユーザー専用のフィールドをいくつか追加する必要があります。

例: の一部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 は私のメソッドについて何も知らず、ifラムダで false を返します。どうすればこの問題を解決できますか? 私は提案の準備ができています。ありがとうございました!

私が使うrails-3.2.6 doorkeeper-0.4.2 rabl-0.6.13

4

1 に答える 1

1

あなたが試すことができます:

  • 使用する代わりにコントローラーでインスタンス変数を設定するcurrent_user
  • または、ユーザーがログインしているかどうかにかかわらず、別のファイルをレンダリングします(重複を避けるために rabl partial を使用します)

私も rabl と doorkeeper を使用しているので、良い解決策が見つかったら最新情報をお知らせください ;) すぐに同じことをする必要があるかもしれません。

于 2012-08-15T20:34:44.060 に答える