У меня есть запрос, который сгенерировал список данных продукта; Я работаю, чтобы копнуть немного глубже и извлечь атрибут из таблицы соединений (ProductSelections). Как RFIDTag, так и Products имеют многие модели выбора продуктов (то есть таблица схемы содержит как rfid_tag_id, так и product_id). Поскольку я работаю из списка продуктов, мой запрос выводится здесь:
#original query (works as needed):
@warehoused_products = Product.includes(:rfid_tags).joins(:rfid_tags).where("rfid_tags.location_type = 'Warehouse' AND rfid_tags.location_id = ?", params[:id])
#Attempt at getting product selection data:
@product_histories = @warehoused_products.joins("INNER JOIN product_selections ON :product_selections.product_id = products.id").includes(:product_selections)
При проверке возникает довольно большая ошибка postgreSQL:
raise @product_histories.inspect:
PG::SyntaxError: ERROR: syntax error at or near ":" LINE 1: ...eted_at" IS NULL INNER JOIN product_selections ON :product_s...
При настройке запроса:
raise @warehoused_products.includes(:product_selections).joins(:product_selections).where("product_selections.product_id = ?", params[:product_id]).first.inspect
Я получаю nil
результат - безошибочный и, вероятно, более чистый, но не совсем там.
Объект Product Selection выглядит так, для справки:
#<ProductSelection id: 269, user_id: 2, listing_id: 11, product_id: 35, created_at: "2016-07-14 15:38:11", updated_at: "2016-08-08 21:10:13", rfid_tag_id: 575, part_id: nil, use_time: 2173274, account_id: 1, deleted_at: nil>
Как мне разрешить запрос, чтобы я мог вытянуть связанный табличный объект?