Концептуально я пытаюсь сказать: продукт a доступен в 5 цветах, который будет представлять собой массив идентификаторов цветов.Эти идентификаторы цвета - это ключи, которые ссылаются на таблицу цветов, в которой хранятся связанные с цветом данные, такие как шестнадцатеричные представления, цветные изображения и т. Д.Наконец, я хочу объединить таблицу цветов с таблицей продуктов, чтобы можно было перетаскивать связанные с цветом данные.
В моей текущей настройке у меня есть две таблицы: products
и colors
.В моей таблице products
у меня есть столбец (color_ids
), который содержит массив целых чисел.Этот массив содержит идентификаторы colors
в таблице colors
.Чтобы объединить их в Rails, я создал пользовательскую строку SQL в классе Product
, например:
class Product < ApplicationRecord
has_many :colors
def self.custom_query
"SELECT * FROM products JOIN colors on colors.id = ANY(products.color_ids)
WHERE products.name = 'Some Product'"
end
end
Я пытался использовать ассоциации (includes(:colors)
), но, похоже, это не работаетосновной идентификатор представляет собой массив идентификаторов.
Есть ли более элегантный / Rails способ добиться того, что я пытаюсь сделать?