Группировка в Ransack

def index
  @q = Product.ransack(params[:q])
  @products = @q.result.group(:product_sizes)
end

def product_query_params
  params.permit(q: [:weight_lteq, :weight_gteq, :price_lteq, :price_gteq])
end

class Product < ApplicationRecord
  has_many :product_sizes
  has_one :image
end

Product.last.product_sizes.last представляет собой:

ProductSize id: 1242, name: "180 х 220 х 21 ", price: 59280, created_at: "2020-04-04 11:44:35", updated_at: "2020-04-04 11:44:35", product_id: 18

Product.last представляет собой:

Product id: 18, name: "Доктор A2 S1200", about: " ", weight: 100, guarantee: 24, height: 21, spring: nil, orthopedic: true, custom_size: true

Как в ранзаке объединить поля поиска, которые находятся в разных сущностях(объектах)?


Ответы (1 шт):

Автор решения: Василиса

Ransack умеет работать с ассоциациями из коробки. Вам нужно правильно назвать поля в форме, которую вы используете для фильтрации, чтобы в контроллер приходили параметры product_sizes_price_lteq и product_sizes_price_gteq вместо price_lteq и price_gteq

→ Ссылка