JSON: ошибка циклической ссылки в Rails - PullRequest
0 голосов
/ 30 марта 2012

Я пытаюсь создать RESTful API с рельсами. Когда я пытаюсь http://localhost:3000/api/v1/projects.json?token=kS8xi7YzaUDEmbmi9XL6 я получаю сообщение об ошибке:

Parameters: {"token"=>"kS8xi7YzaUDEmbmi9XL6"}
User Load (0.2ms)  SELECT "users".* FROM "users" WHERE "users"."authentication_token" =   'kS8xi7YzaUDEmbmi9XL6' LIMIT 1
Completed 500 Internal Server Error in 3ms

ActiveSupport::JSON::Encoding::CircularReferenceError (object references itself):
app/controllers/api/v1/projects_controller.rb:3:in `index'

Базовый контроллер

class Api::V1::BaseController < ActionController::Base
 before_filter :authenticate_user

respond_to :json


 private
  def authenticate_user
    @current_user = User.find_by_authentication_token(params[:token])
    unless @current_user
      respond_with( {:error => "Token is invalid."} )
    end
  end

  def current_user
    @current_user
  end
end

Главный контроллер

class Api::V1::ProjectsController < Api::V1::BaseController 
 def index
   respond_with(Project.for(current_user))
  end
 end

При попытке в консоли User.find_by_authentication_token("kS8xi7YzaUDEmbmi9XL6") дает правильного пользователя. При отправке этого же токена через params он входит в эту загадочную ошибку. Что мне здесь не хватает?

Спасибо

1 Ответ

0 голосов
/ 30 марта 2012

Понял. Мне нужно было исправить действие контроллера на

def index
  respond_with(Project.for(current_user).all)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...