.rotate! выбрасывает NoMethodError в методе before_create, но .rotate этого не делает - PullRequest
0 голосов
/ 18 июня 2020

В моей модели:

  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

...