或者我认为这就是我想要的。我选择每一行并将它的Sort.sortorder更改为数组值,所以我想要
sqlite> select * from sorts;
515|1|2012-02-24T14:44:07-05:00
516|2|2012-02-24T14:44:07-05:00
517|3|2012-02-24T14:44:07-05:00
518|4|2012-02-24T14:44:07-05:00
sqlite>
使用带有Sinatra的racksh测试代码到目前为止归结为
adkjsd = [1,2,3,4]
adkjsd.each do |jk|
puts jk + 1
Sort.all.update(:sortorder => jk) # true updates all rows to 4 the last in the array
Sort.get(516).update(:sortorder => 0) # only updates that row
end
Sort.all.update(:sortorder => jk) # true updates all rows to 4 the last in the array
#output
sqlite> select * from sorts;
515|4|2012-02-24T14:44:07-05:00
516|4|2012-02-24T14:44:07-05:00
517|4|2012-02-24T14:44:07-05:00
518|4|2012-02-24T14:44:07-05:00
sqlite>
Sort.get(516).update(:sortorder => 0) # only updates that row
#output
sqlite> select * from sorts;
515|4|2012-02-24T14:44:07-05:00
516|0|2012-02-24T14:47:03-05:00
517|4|2012-02-24T14:44:07-05:00
518|4|2012-02-24T14:44:07-05:00
sqlite>
答案 0 :(得分:0)
也许这就是你想要的?
adkjsd = [1,2,3,4]
Sort.all.each_with_index do |sort, i|
sort.sortorder = adkjsd[i]
sort.save
end
我仍然在那里使用数组,因为我不知道你试图设置的值是否总是相同的。如果它只是从一个行开始到行数,你可以这样做:
Sort.all.each_with_index do |sort, i|
sort.sortorder = i + 1
sort.save
end