【问题标题】:Rails active admin filter deleted_atRails 活动管理员过滤器已删除_at
【发布时间】:2015-11-24 23:21:54
【问题描述】:

我希望能够过滤活动管理员中的所有软删除用户。我已经尝试了以下代码,但它似乎没有按预期工作?

filter :deleted_at, :as => :boolean, :collection => {:Yes => nil, :No => ''}

【问题讨论】:

    标签: ruby-on-rails activeadmin


    【解决方案1】:

    它不会起作用,因为它不是正确的方法:

    filter :deleted_at, :as => :boolean, :collection => {:Yes => nil, :No => ''}
    

    as: :boolean 不是 AA 命令。

    试试这个:

    filter :deleted_at, as: :select, collection: [['Yes', nil], ['No', '']]
    

    值是根据你的!如果数据库包含真正的布尔字段,则更改它:

    filter :deleted_at, as: :select, collection: [['Yes', true], ['No', false]]
    

    你也可以使用作用域来实现它:

    scope :deleted, default: true
    scope :not_deleted
    

    将这些范围添加到您的模型中:

    scope :deleted, -> { where('deleted_at is not null') }
    scope :not_deleted, -> { where(deleted_at: nil) }
    

    【讨论】:

    • 谢谢,我尝试了您的方法,但仍然遇到一些问题。基本上我的deleted_at 是nil 或datetime。当我在过滤器上选择“是”时,我想向所有用户显示 deleted_at: nil?
    • 为什么不使用作用域?
    • 好的,我是activeadmin的新手,我去看看
    • 我得到了 #<:resourcedsl:0x007f9989a9ea00> 的未定义方法 `where'
    • 第二个你应该放在你的模型中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多