ruby-on-rails 仅显示is_active为true的行,除非用户在ROR active scaffold中搜索false行

gijlo24d  于 2023-05-19  发布在  Ruby
关注(0)|答案(1)|浏览(105)

我有一个表,其中列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
q0qdq0h2

q0qdq0h21#

试着帮你你试过使用default_scope吗?这里的文档:https://apidock.com/rails/ActiveRecord/Base/default_scope/class你可以使用ActiveModel::Type::Boolean.new.cast(value)代替case“true”示例:

def condition_for_is_active_column(column, value, like_pattern)
  ['is_active = ?', ActiveModel::Type::Boolean.new.cast(value)]
end

Bollean模型格式:1 => true,“true”=> true,nil => false。希望对你有所帮助

相关问题