如何按计算值将过滤器添加到活动管理员?



我有可以阻止的帐户。

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 的按钮或link_to的 Rails 过滤器

最新更新