繁体   English   中英

如何按计算值将过滤器添加到activeadmin?

[英]How to add filter by calculated value to activeadmin?

我有可能被冻结的帐户。

account.rb
has_many :blocks

block.rb
belongs_to :account

块模型具有字段blocked_atunblocked_at 我需要过滤X天内被阻止的帐户。 为了选择当前状态,我在account模型中blocked了字段。 为了显示帐户被冻结的天数,我将其添加到AA表中:

 column 'Days blocked' do |account|
      (Date.today - account.blocks.last.blocked_at.to_date).to_i if account.blocked
 end 

问题是现在如何通过此字段对其进行过滤?

我相信您可以像这样创建自定义范围:

scope :scope_name, -> { where( 'Days blocked' > X ) }

scope_name是您要命名的名称, X是您希望的天数)

您需要此,因此Ransack知道您可以在控制器中使用此作用域:

def self.ransackable_scopes(auth_object = nil)
   [:scope_name]
end

在您的控制器中:

@accounts = @q.result.scope_name

注意:如果您只想在用户单击按钮或选择过滤器时进行过滤,它将一直在此范围内进行过滤,请参见以下问题: 使用Ransack使用button或link_to进行Rails过滤

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM