Sinatra 迭代Datamapper获取更新单个行 试图对get()进行评分

Sinatra 迭代Datamapper获取更新单个行 试图对get()进行评分,sinatra,datamapper,Sinatra,Datamapper,或者我想这就是我想要的。我需要选择每一行并将其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> 到目前为止,使

或者我想这就是我想要的。我需要选择每一行并将其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> 
到目前为止,使用racksh和Sinatra的测试代码可以归结到这一点

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> 

  

也许这就是你想要的

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

!!!!! 你赢了一百万个互联网!!!!谢谢你!这是一次学习冒险,将此问题与我问题堆中的前一个问题结合起来。再次感谢你!