3
我正在使用Ruby on Rails 3.0.7,並且我有一個position
數據庫表列以處理可排序的記錄列表。我想更新該列中所有符合某些條件的記錄,以銷燬position
值爲「處於所有位置值中間」的記錄,但將訂單(數字)保留在position
列中。更新所有匹配某些條件但在數據庫表列中保留「位置索引」值的記錄
也就是說,例如,如果在類對象的下面的列表我毀滅與position
和user_id
記錄
#<Article id: 1, position: 1, user_id: 1>,
#<Article id: 2, position: 1, user_id: 2>,
#<Article id: 3, position: 2, user_id: 1>,
#<Article id: 4, position: 3, user_id: 1>,
#<Article id: 5, position: 1, user_id: 3>,
#<Article id: 6, position: 4, user_id: 1>,
#<Article id: 7, position: 5, user_id: 1>,
#<...> # A lot of others records having 'user_id' = 1
我想更新與user_id
所有其他記錄所以有
#<Article id: 1, position: 1, user_id: 1>,
#<Article id: 2, position: 1, user_id: 2>,
#<Article id: 3, position: 2, user_id: 1>,
#<Article id: 5, position: 1, user_id: 3>,
#<Article id: 6, position: 3, user_id: 1>,
#<Article id: 7, position: 4, user_id: 1>,
#<...> # A lot of others records having 'user_id' = 1
當然,一切小心性能。
我該怎麼做(可能在單個子句\語句中)?
我知道update_all
方法可好歹幫助,但我不知道如何自動遞增使用position
值。
什麼是「集更新的文章...... 「? – Backo
這只是純粹的SQL作爲你的例子。如果您不熟悉SQL,可以忽略它。只需看看update_all代碼:) – Casper
謝謝(15個字符...)。 – Backo