В моей модели:
after_initialize :populate_neutral_post_option
before_create :make_neutral_option_last
module RequiredOptions
NEUTRAL = "Neutral"
end
def populate_neutral_post_option
if self.new_record? && post_options.map(&:text).exclude?(RequiredOptions::NEUTRAL)
post_options.build(text: RequiredOptions::NEUTRAL)
end
end
def make_neutral_option_last
post_options.rotate!(1)
end
И я получаю NoMethodError, в котором говорится, что .rotate!
не определено. Обычный старый .rotate
без взрыва работает нормально, но я хочу, чтобы результат был сохранен в исходном массиве.
Цель состоит в том, чтобы этот «нейтральный» вариант публикации появлялся в списке последним. Я могу вызвать .rotate
в массиве в представлении, но это похоже на ненужную повторяющуюся работу, когда мне, вероятно, следует просто изменить исходный массив, верно? Любой совет?
Бег ruby 2.7.0p0