У меня есть корзина, в которой есть товары. Мой класс BasketItem .
Элемент BasketItem принадлежит_: item .
Item имеет много item_tags . Он также имеет много тегов от до item_tags .
Для тегов установлено значение ключа. Ключом могут быть такие вещи, как «цена», «скоропортящиеся», «продукты» и т. Д. Ключ «продукты» имеет такие значения, как «цитрусовые», «ягодные фрукты», «дыня», «овощ», «корень» , "грибок" и т. д.
При извлечении корзины я хочу, чтобы предметы возвращались в порядке по умолчанию: все фрукты, грибок, а затем все остальное.
В SQL я бы сделал свои объединения и затем добавил:
ORDER BY (
CASE
WHEN tags.value LIKE '%fruit%' THEN 0
WHEN tags.value = 'Vegetable' THEN 1
ELSE 2
END)
Я пробовал:
has_many :tags, through: :produce
с областью действия по умолчанию:
default_scope { order(tags: :desc) }
Просто чтобы посмотреть, смогу ли я получить доступ к тегам, чего я не могу. На самом деле, если посмотреть на генерирование SQL, оно прямо вытягивает из basket_items без соединений.
1) Так как мне оформить заказ в отношении этого тега?
2) Как я могу получить мой случай там?
3) И как мне сделать это по умолчанию? (Если это не default_scope.)
Спасибо!