model.save не делает, когда я изменяю один атрибут на false - PullRequest
1 голос
/ 25 августа 2011

У меня есть модель Голосовать.Голосование имеет атрибут voice_type.В моем контроллере я делаю это

 @vote = Vote.fetch(1)
 logger.warn("current vote_type: #{@vote.vote_type}")
 @vote.vote_type = false 
 @vote.save

Это не выдает никакой ошибки, но я вижу следующее на моем сервере

    Vote Columns (0.7ms)   SHOW FIELDS FROM `votes`
    current vote_type: true
    SQL (0.1ms)   BEGIN
    SQL (0.1ms)   ROLLBACK

Я понятия не имею, почему он откатывается.Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 25 августа 2011

Если поле может «не иметь значения» - то есть значение false, - тогда удалите значение required => true из исходной миграции и воссоздайте эту таблицу / db (или создайте новую миграцию, которая удаляет требуемый параметр).

1 голос
/ 25 августа 2011

Распространенной проблемой Rails является попытка «validate_presence» логического значения. Что проверка использует .blank? и false.blank => true. Поэтому, чтобы проверить наличие логического значения, используйте:

validates :vote_type, :inclusion => {:in => [true, false]}
...