У меня есть объект с булевым var.Ruby true, false или nil
field :processing, :type => Boolean
Дег передо мной написал код, который говорит об этом.
:processing => nil
(Он, по какой-то причине, установив ее на ноль вместо ложной.)
Он делает это, если заявление
return if self.processing
dosomethingelse....
Если я пишу код, который делает этот
:processing => false
Что произойдет в следующий раз при запуске этого кода? Выполняется ли dosomethingelse?
return if self.processing
dosomethingelse....
UPDATE ===========
Для многих вопросов ниже, так будет отвечать здесь.
Я добавил этот
field :processing, :type => Boolean, :default => false
и сломал приложение. Когда я перешел на вышеупомянутый dosomethingelse, он никогда не запускается?
return if self.processing
возвращение товара не возможно. Какие-либо предложения?
UPDATE 2 =======================================
Здесь это всякая ссылка на обработку в моем коде (redacted). Также я использую MongoDB, если это имеет значение.
.where(:processing => nil).gt(:retries => 0).asc(:send_time).all.entries
if self.processing
end
return if self.processing
self.update_attributes(:processing => true)
dosomethingelse....
.where(:sent_time => nil).where(:processing => nil).gt(:retries => 0).asc(:send_time).all.entries
:processing => nil
В этом случае 'false' и' nil' должны вести себя одинаково. поэтому да, 'dosomethingelse' должен работать, если': processing => false' – ptierno
'false' и' nil' функция аналогичным образом в условиях. Они отличаются только намерением (для человеческой стороны). Если вы хотите противопоставить 'true', вы используете' false'. Если вы хотите выразить отсутствие значения, вы используете 'nil'. – sawa
Пока вы не проверяете 'self.processing == false', он должен работать одинаково. – sschmeck