Вы можете использовать метод ActiveRecord для проверки правдивых значений, если вы не хотите изобретать велосипед (это то, что используется при передаче параметров внутри объекта ActiveRecord
Рельсы 3-4.1
if ActiveRecord::ConnectionAdapters::Column.value_to_boolean(params[:debug])
do xyz
else
do abc
Рельсы 4.2.0
ActiveRecord::Type::Boolean.new.type_cast_from_database(params[:debug])
Рельсы 5
ActiveModel::Type::Boolean.new.cast(params[:debug])
Может быть, стоит обернуться помощником, но тем не менее он довольно гибкий:
rails c
Loading development environment (Rails 3.2.6)
1.9.3p194 :001 > ActiveRecord::ConnectionAdapters::Column.value_to_boolean '1'
=> true
1.9.3p194 :002 > ActiveRecord::ConnectionAdapters::Column.value_to_boolean '0'
=> false
1.9.3p194 :003 > ActiveRecord::ConnectionAdapters::Column.value_to_boolean 1
=> true
1.9.3p194 :004 > ActiveRecord::ConnectionAdapters::Column.value_to_boolean true
=> true
1.9.3p194 :005 > ActiveRecord::ConnectionAdapters::Column.value_to_boolean 'true'
=> true
1.9.3p194 :006 > ActiveRecord::ConnectionAdapters::Column.value_to_boolean 'on'
=> true
1.9.3p194 :007 > ActiveRecord::ConnectionAdapters::Column.value_to_boolean 'off'
Пользовательское расширение
Некоторые люди недовольны расширением базовых классов, но это соответствует принципу СУХОЙ.
# config/initializer/boolean.rb
class Boolean
def self.parse(value)
ActiveRecord::ConnectionAdapters::Column.value_to_boolean(value)
end
end
Затем используется как
if Boolean.parse(params[:debug])
then xyz