Рабл и привратник

Я разрабатываю API для своего проекта rails и не знаю, как решить эту проблему.

Я использую doorkeeper gem для аутентификации и rabl gem для рендеринга 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

А рабл ничего не знает о моем методе и возвращает false в if лямбде. Как я могу решить эту проблему? я готов к любым предложениям. Спасибо!

я использую rails-3.2.6 doorkeeper-0.4.2 rabl-0.6.13


person caulfield    schedule 13.08.2012    source источник


Ответы (1)


Можешь попробовать:

  • установка переменной экземпляра в вашем контроллере вместо использования current_user
  • или рендеринг другого файла независимо от того, вошел ли пользователь в систему или нет (и используйте частичное использование rabl, чтобы избежать дублирования)

Я также использую rabl и doorkeeper, так что держите меня в курсе, если найдете хорошее решение ;) Возможно, скоро мне понадобится сделать то же самое.

person Robin    schedule 15.08.2012
comment
Спасибо за ответ. Но мне не нужна помощь сейчас. Это была моя ошибка ;) я забыл access_token в своих параметрах и doorkeper_token не был инициализирован, поэтому не было current_user. Но я могу добавить, этот метод работает очень хорошо;) - person caulfield; 16.08.2012