Це запитання досить давнє, але оскільки я пару разів стикався з цим питанням і мені не сподобалось жодне із запропонованих рішень, я сам зламав щось, що дозволяє використовувати декілька рядків для істинних, таких як 'так', 'на' , 't' і протилежне для false.
Мавпа виправляє клас String і додає метод, щоб перетворити їх на логічний, і помістіть цей файл, /config/initializers
як запропоновано тут: Виправлення мавп у Rails 3
class String
def to_bool
return true if ['true', '1', 'yes', 'on', 't'].include? self
return false if ['false', '0', 'no', 'off', 'f'].include? self
return nil
end
end
Зверніть увагу, що якщо значення не є жодним з дійсних чи то для true, ні для false, то воно повертає нуль. Шукати не однаково ?paid=false
(повернути всі записи, що не оплачені), ніж ?paid=
(я не вказую, чи потрібно це платити, чи ні - тому відкиньте це).
Тоді, слідуючи цьому прикладу, логіка у вашому контролері буде виглядати так:
Something.where(:paid => params[:paid].to_bool) unless params[:paid].try(:to_bool).nil?
Це досить акуратно і допомагає підтримувати контролери / моделі в чистоті.
TrueClass
і лишеFalseClass