Рельсы увеличивают значение в дБ на один - PullRequest
0 голосов
/ 30 сентября 2010

В моей БД есть таблица Страниц с полем с именем position.

Как я могу увеличить это значение на единицу, прежде чем оно будет сохранено?

Еще лучше, как я могу удалить неиспользуемые позиции и дать новой записи правильный номер позиции?

Ответы [ 2 ]

1 голос
/ 30 сентября 2010

Вам нужен обратный вызов before_save:

В вашей модели страницы:

before_save :increase_position

def increase_position
  self.position += 1
end

Вы можете добавить любую логику в метод увеличения_позиции для удаления неиспользуемых позиций.

0 голосов
/ 30 сентября 2010

вам нужно использовать плагин acs_as_list или настроить некоторые до и после фильтров.

before_create :set_position
after_destroy :fix_positions

def set_position
   self.position = Page.count + 1
end

def fix_positions
  Page.order('position asc').all.each_with_index do |page, index|
    page.update_attribute(:position, index + 1) unless page.position == index + 1
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...