Есть массив
[#<ProductAttributeValue position: 5>,#<ProductAttributeValue position: 2>,#<ProductAttributeValue position: 4>,#<ProductAttributeValue position: 1>,#<ProductAttributeValue position: 3>]
ProductAttribute
has_many
ProductAttributeValue
Сделал кнопку, которая сортирует
ProductAttributeValue
по атрибуту
position
.
def sort_attributes
ProductAttribute.all.map do |pa|
a = ProductAttributeValue.where(product_attribute_id: pa.id).sort_by(&:position)
end
redirect_to product_attributes_path
end
Нажимаю кнопку, Код ничего не делает и в логах только
ProductAttributeValue Load (0.5ms) SELECT "product_attribute_values".* FROM "product_attribute_values" WHERE "product_attribute_values"."product_attribute_id" = 1878
ProductAttributeValue Load (0.5ms) SELECT "product_attribute_values".* FROM "product_attribute_values" WHERE "product_attribute_values"."product_attribute_id" = 1771
ProductAttributeValue Load (0.5ms) SELECT "product_attribute_values".* FROM "product_attribute_values" WHERE "product_attribute_values"."product_attribute_id" = 2241
ProductAttributeValue Load (0.5ms) SELECT "product_attribute_values".* FROM "product_attribute_values" WHERE "product_attribute_values"."product_attribute_id" = 2242
ProductAttributeValue Load (0.6ms) SELECT "product_attribute_values".* FROM "product_attribute_values" WHERE "product_attribute_values"."product_attribute_id" = 2197
Хотя когда дебажжу, то вроде бы позиции меняются. т.е. получается массив с
[#<ProductAttributeValue position: 1>,#<ProductAttributeValue position: 2>,#<ProductAttributeValue position: 3>,#<ProductAttributeValue position: 4>,#<ProductAttributeValue position: 5>]
Запрос должен быть примерно таким, но эквивалент в ruby не могу составить:
ProductAttributeValue Load (0.9ms) SELECT "product_attribute_values".* FROM "product_attribute_values" WHERE "product_attribute_values"."product_attribute_id" = 1651 ORDER BY "product_attribute_values"."position"
SQL (44.9ms) UPDATE "product_attribute_values" SET "position" = 0 WHERE "product_attribute_values"."id" = 7537
SQL (9.2ms) UPDATE "product_attribute_values" SET "position" = 1 WHERE "product_attribute_values"."id" = 7474
SQL (9.3ms) UPDATE "product_attribute_values" SET "position" = 2 WHERE "product_attribute_values"."id" = 7395
SQL (9.1ms) UPDATE "product_attribute_values" SET "position" = 3 WHERE "product_attribute_values"."id" = 7216
SQL (9.5ms) UPDATE "product_attribute_values" SET "position" = 4 WHERE "product_attribute_values"."id" = 7046