проблема булева метода в одном смысле - PullRequest
0 голосов
/ 21 октября 2011

У меня есть следующая функция в моей модели

after_save :update_status

def update_status
  if quantity_received >= quantity
    self.received = true
  else
    self.received = false
  end
end

True отлично работает, но при значении true не обновляется до false. Есть идеи?

Ответы [ 2 ]

2 голосов
/ 21 октября 2011

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

Переписанная версия, позволяющая избежать этой проблемы:

after_save :update_status

def update_status
  self.received = quantity_received >= quantity

  return
end

Вы можете вернуть все, кроме false, поэтому последняя строка может быть nil или true точно такой же.

1 голос
/ 21 октября 2011

Вы назначаете полученное "после" сохранения.Так что это назначение не сохраняется!

Попробуйте

before_save :update_received

def update_received
  self.received = quantity_received >= quantity
end

И под "сохранено" я предполагаю, что вы имеете в виду "сохранено" в базе данных.

...