我有一个表,其中列is_active接受布尔参数。因此,我希望只列出默认情况下is_active为true的行,除非用户搜索值为false的行。有没有什么办法可以做到这一点。我尝试了**“conditions_for_collection“方法,但它只显示true行,当你搜索false时,它显示没有找到行。我也尝试了condition_for_is_active_column**,但没有成功。
def conditions_for_collection
['is_active = ?', true]
end
def condition_for_is_active_column(column, value, like_pattern)
case value
when 'true'
['is_active = ?', true]
when 'false'
['is_active = ?', false]
end
end
1条答案
按热度按时间q0qdq0h21#
试着帮你你试过使用default_scope吗?这里的文档:https://apidock.com/rails/ActiveRecord/Base/default_scope/class你可以使用ActiveModel::Type::Boolean.new.cast(value)代替case“true”示例:
Bollean模型格式:1 => true,“true”=> true,nil => false。希望对你有所帮助