У меня есть такие типичные Order
, , Product
.Упорядочить по колонке ассоциации по MySQL, но не по Postgresql
Order
имеет много LineItem
s, и LineItem
имеет поле product_id
.
Я пытаюсь сортировать LineItem
s в Order
на основе столбца таблицы продуктов, названного code
.
Итак, это работает локально, в базе данных MySQL, но не в производстве, где я использую PostgreSQL.
scope :sort_by_product_id, -> {
includes(:product)
.order("products.code asc")
}
Ошибка:
ActionView::Template::Error (PG::SyntaxError: ERROR: syntax error at or near "products"
LINE 1: ..._id" WHERE "line_items"."order_id" = $1 ORDER BY products...
^
: SELECT "line_items".* FROM "line_items" INNER JOIN "products" ON "products"."id" = "line_items"."product_id" WHERE "line_items"."order_id" = $1 ORDER BY products.code asc):
Я попытался подобное с joins
вместо includes
но все же ошибки только в производстве.
Это дает мне еще одну ошибку: 'Направление "{: код =>: по возрастанию}" является недопустимым. Допустимые направления: [: asc,: desc,: ASC,: DESC, «asc», «desc», «ASC», «DESC»] '. Кажется, мы не можем пройти там хэш. – pzin
@pzin вы можете попробовать '.order (code:: asc)'? который sql он производит? – itsnikolay
, который пытается заказать неизвестный столбец 'line_items.code' в качестве первого варианта, предложенного @larrylv. – pzin