У меня самая странная проблема с PostgreSQL - кто-нибудь может помочь?
Мое приложение позволяет пользователям создавать объекты, которые затем отображаются на странице. Я следовал учебнику Ryan Bates Railscasts , чтобы сделать их сортируемыми, что прекрасно работает в моей системе.
Так локально, используя этот код:
def sort
params[:faqs].each_with_index do |id, index|
Object.update_all(['position=?', index+1], ['id=?', id])
end
render :nothing => true
end
Я получаю этот вывод по запросу POST:
Запущен POST "/ users / sort_object" для 127.0.0.1 во вторник, 06 декабря
16:43:52 +0100 2011 Обработка ObjectController # сортировать как JS
Параметры:
{ "Authenticity_token" => "#####################",
"_" => "", "faqs" => ["5", "1389", "11", "1350", "147", "849", "932",
«1260», «23», «10», «1261»]} AREL (1,8 мс) ОБНОВЛЕНИЕ «SET» объектов
position = 1 WHERE (id = '5') AREL (1.2ms) ОБНОВЛЕНИЕ SET объектов
position = 2 WHERE (id = '1389') AREL (2.9ms) ОБНОВЛЕНИЕ SET объектов
position = 3 WHERE (id = '11 ') AREL (3.3ms) ОБНОВЛЕНИЕ SET объектов
position = 4 WHERE (id = '1350') AREL (1.4ms) ОБНОВЛЕНИЕ SET объектов
position = 5 WHERE (id = '147') AREL (1.5ms) ОБНОВЛЕНИЕ SET объектов
position = 6 WHERE (id = '849') AREL (1.2ms) ОБНОВЛЕНИЕ SET объектов
position = 7 WHERE (id = '932') AREL (1,5 мс) ОБНОВЛЕНИЕ SET объектов
position = 8 WHERE (id = '1260') AREL (1.5ms) ОБНОВЛЕНИЕ SET объектов
position = 9 WHERE (id = '23 ') AREL (2.0ms) ОБНОВЛЕНИЕ SET объектов
position = 10 WHERE (id = '10 ') AREL (1.9ms) ОБНОВЛЕНИЕ SET объектов
position = 11 WHERE (id = '1261') Визуализированный текстовый шаблон (0,0 мс)
Я проверил это локально с несколькими пользователями, и изменение порядка на одном не мешает другим объектам - как вы можете видеть, БД только вставляет позицию для идентификатора объекта, указанного для этого пользователя.
Однако, когда я смотрю на базу данных, хранящуюся в Heroku, происходит нечто странное. В итоге я получаю пользователей, у которых есть несколько Объектов с позицией = 1, что, по-видимому, вызвано тем, что другие пользователи меняют свое положение.
Может кто-нибудь помочь? Есть ли способ отладить это (у меня нет выделенного сервера на Heroku, поэтому я не могу транслировать логи)? Кто-нибудь знает, что может быть причиной?
Надеюсь, это понятно, кричите, если нет ...