Две модели: Жанр и Кино.Жанр имеет много фильмов, фильм принадлежит жанру.
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