@andreyjvasilev

Как задать limit для запроса связанных моделей в Ruby on Rails в контроллере?

Задача вывести корневые категории и по 5 дочерних категорий на странице каталога.

Связь в модели:

class Category < ApplicationRecord
  has_many :subcategories, -> { order(:weight, :name) }, foreign_key: :parent_id, class_name: 'Category'
end


Получаю корневые категории
@categories = Category.where(parent_id: nil).order(:weight, :name).all

Соответственно @categories содержит все корневые категории, а @categories[0].subcategories все дочерние для выбранной категории. А нужно что бы было не более 5.

Нужно результата добился, модифицировав запрос в связи модели:
has_many :subcategories, -> { order(:weight, :name).limit(5) }, foreign_key: :parent_id, class_name: 'Category'


Но мне нужна эта связь без лимита. Могу ли я как-то задать limit для subcategories в контроллере?
  • Вопрос задан
  • 136 просмотров
Пригласить эксперта
Ответы на вопрос 1
Dem1
@Dem1 Куратор тега Ruby on Rails
Ruby on Rails developer
Делая так
# subcategory.rb
scope :recent, -> (count = 2) { limit(count) }

# category.rb

has_many :recent_subcategories, -> { recent }, class_name: Subcategory
# если не хотите scope в subcategoty
has_many :recent_subcategories, -> { limit(2) }, class_name: Subcategory

# получите
@categories[0].recent_subcategories
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы