Группировка в 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