2015-09-18 7 views
1

Я делаю веб-страницу, где я выполняю итерацию через базу данных строк, и она чувствительна к порядку. Оказывается, когда я засеял записи, я допустил ошибку в одном из значений в строке, поэтому я пошел на консоль, чтобы изменить ее. Как только я ввел «project.save», он переместил эту строку в нижнюю часть таблицы, тем самым разрушив мой заказ. Как перенести последнюю строку в верхнюю часть таблицы и нажимать каждую другую строку на одну?Ruby on Rails консоль, перемещающая строки в DB

+0

Я думаю, что я знать, что вы делаете неправильно, но было бы полезно, если бы вы поставили код, демонстрирующий, что вы делали, что вызывает проблему, а также структуру таблицы любой таблицы, которую вы используете. Пожалуйста, имейте в виду, что пользователи переполнения стека, как правило, лучше развиваются, чем психические силы. Мы не можем знать, что происходит, если вы не покажете нам. – MarsAtomic

+0

На самом деле это не связано с кодом. В основном я запускал консоль рельсов, чтобы изменить запись, выполнив проект = Project.first. Тогда project.name = "новое имя". Впоследствии, project.save. Это привело к тому, что первая строка была помещена в последнюю строку. –

ответ

0

Сортировка по умолчанию ActiveRecord - «Обновлено по». Он не меняет положение строки в базе данных.

Просто измените область по умолчанию на «id».

просто добавьте эту строку в свою модель, и по умолчанию будет ваш идентификатор.

default_scope { order(:id) } 

Для лучшего решения добавить позицию в вашей модели, то сортировать по этой

default_scope { order(:position) } 

Это Rails 4 синтаксиса, он отличается для Rails 3 и 2.

+0

Работал как шарм. Благодаря! –

+0

Недопустимые области действия по умолчанию. если вы хотите заказать запрос, закажите, что запрос - по умолчанию области будут заказывать * каждый * запрос одинаковый. – eirikir

0

Ответ заключается в том, чтобы использовать предложения «ORDER BY» в ваших операциях выбора. Без этого MySQL не гарантирует, что результаты будут в любом порядке.