Актуализиране на колоната на обект в rails обект чрез позицията му в масива

Имам масив от обекти в Rails за някаква таблица. Искам да актуализирам неговото поле за ред чрез позицията на този обект в масива с една заявка за активен запис. Как мога да направя това?

Опитах update_all.(:"order" => ?), но не можах да получа обекта, който се актуализира в update_all.


person vishesh268    schedule 12.04.2018    source източник


Отговори (2)


Да предположим, че @user (само препратка, която можете да използвате съответния ви обект) е масивът от обекти (Activerecord), тогава за да актуализирате полето за ред на всички потребители в масива, ще трябва да изпълните следната заявка

@user.update_all(order_field: value)
person Rohan    schedule 12.04.2018

Да предположим, че имате масив от posts, тогава можете да направите нещо като следното

posts.each_with_index do |post, index| 
  post.update_attributes order: index 
end 

Това ще изпълни една заявка за всеки post. Ако искате една заявка да актуализира всички публикации в масива, това е много по-трудно за постигане. Варианти, за които се сещам:

  • групово актуализиране
  • използвайки съхранена процедура
person nathanvda    schedule 12.04.2018
comment
правилно е, но се опитвам да го направя в една заявка възможно ли е...?? - person vishesh268; 12.04.2018
comment
Възможно е, но е много по-сложно и не съм сигурен, че си заслужава imho. Проверете този отговор: stackoverflow.com/questions/11563869/ - person nathanvda; 12.04.2018