Логическое значение сохраняется как 1 или 0, но оно всегда интерпретируется как true
или false
перед возвратом из модели.Это является источником путаницы.
Использование метода доступа show_weekly?
может помочь, поскольку знак вопроса в имени метода обычно указывает, что он вернет логическое значение, или что-то, что можно оценить какboolean.
Будет намного удобочитаемее, если у вас есть:
<% if @listing.show_weekly? %>
...
<% else %>
...
<% endif %>
По возможности избегайте сравнения с конкретными жестко закодированными значениями.Например, следующее является избыточным, и все же я вижу его все время:
# Example: Comparison to nil
if (@something == nil)
# Should be: Checking if initialized
if (@something)
# Example: Comparison to true
if (@something == true)
# Should be: Testing directly
if (@something)
Поскольку есть только два значения, которые оценивают как false в Ruby, nil
и false
, как правило, все, что не соответствует действительности, равно нулю.Иногда у вас будут логические столбцы, которые могут быть true
, false
или nil
, если они не определены, но это необычно и может сбить людей с толку.