Вставьте другое поле в GET-ответ JSON - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть следующий код, который отвечает на GET /something.json:

def index
  @something = Something.all

  respond_to do |format|
    format.json { render json: @something }
  end
end

Это запускает SELECT * FROM something в базе данных, форматирует результат в JSON и отвечает им.

Запрос может запрашивать другое поле через параметр запроса, который находится в другой таблице, чем something. Мне удалось получить нужное поле, выполнив это:

def index
  @something = Something.all

  if params[:get_field_from_some_other_table] == "true"
    @something.each do |i|
        some_other_table = SomeOtherTable.find(i.some_other_table_id)
        the_field_i_want = some_other_table.the_field
    end
  end

  respond_to do |format|
    format.json { render json: @something }
  end
end

Но я не нашел способа добавить поле в строку JSON. Как я могу это сделать? Или есть лучший способ извлечь поле с содержимым таблицы something через JOIN или что-то подобное?

1 Ответ

0 голосов
/ 08 ноября 2018

something и other_table должны быть связаны как-то в active_record ... может быть, has_one?
Попробуйте, а затем просто используйте @something.all.includes(:other_table_attribute)

Кроме того, пожалуйста, напишите свой код правильно с некоторыми читаемыми примерами, это очень поможет и даст вам более быстрые ответы:)

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