Итерация Datamapper получить обновление отдельных строк - PullRequest
0 голосов
/ 24 февраля 2012

Попытка итерации get ()

Или я думаю, это то, что я хочу. Я должен выбрать каждую строку и изменить ее 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> 

1 Ответ

0 голосов
/ 25 февраля 2012

Возможно, это то, что вы хотите?

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
...