Как всегда возвращать массив JSON для одного результата в Ruby On Rails? - PullRequest
0 голосов
/ 09 декабря 2018

Какой самый простой или ожидаемый способ всегда возвращать массив JSON из API-контроллера в Ruby On Rails?

Допустим, у меня есть следующее действие контроллера:

def index
  render json: Entry.all.includes(:user).to_json(include: :user) if current_user.has_role?(:administrator)
  render json: Entry.find_by(user: current_user).to_json(include: :user)
end

Список записей возвращается.Иногда результатом является только одна запись, поэтому to_json() создает не массив JSON, а объект JSON.

Это усложняет все, например, документирование API и реализацию на клиентах, потому что мы должны проверить на пустоерезультаты, отдельные результаты и результаты массивов.

Как можно всегда возвращать здесь массив JSON?

Стек: Ruby 2.5.3;Рельсы 5.2.2

1 Ответ

0 голосов
/ 09 декабря 2018

Попробуйте изменить

render json: Entry.find_by(user: current_user).to_json(include: :user)

на

render json: Entry.where(user: current_user).to_json(include: :user)

find_by, чтобы вернуть объект, тогда как where и ActiveRecord::Relation

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...