Активная запись запроса с ассоциациями - PullRequest
0 голосов
/ 30 ноября 2018

Две модели: Жанр и Кино.Жанр имеет много фильмов, фильм принадлежит жанру.

  create_table "genres", force: :cascade do |t|
    t.string "name"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  create_table "movies", force: :cascade do |t|
    t.string "title"
    t.integer "genre_id"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

Я хочу вернуть (в формате JSON) список всех фильмов (название), с жанром (название и количество фильмов в этом жанре), но я хочу использовать модель фильма для созданиязапрос (Movie.some_query, а не Genre.some_query).Я сделал что-то вроде:

Movie.select (: id,: title) .joins (: genre) .select ('name as genre_name')

, что даетформат меня: [{"id": 1, "title": "Titanic", "genre_name": "Horror"}

Я хотел бы добавить количество фильмов в жанре в качестве последней записи.Когда я пытаюсь использовать методы .count или .length, консоль возвращает ошибку.

Контроллер:

module Api
    module V1
        class MoviesController < ApplicationController
            respond_to :json

            def index
                respond_with Movie.select(:id, :title).joins(:genre).select('name as genre_name')
            end
        end
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...