如何通过计算值添加过滤器到activeadmin?
问题描述:
我有可以在块中的帐户。如何通过计算值添加过滤器到activeadmin?
account.rb
has_many :blocks
block.rb
belongs_to :account
块模型领域blocked_at
和unblocked_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
是无论多少天,你愿意的话)
您需要这使洗劫知道你
def self.ransackable_scopes(auth_object = nil)
[:scope_name]
end
而在你的控制器:可以在你的控制器使用范围
@accounts = @q.result.scope_name
注:这将这个范围内的所有时间过滤器,如果要筛选,只有当用户点击一个按钮或选择过滤器,看看这个问题:Rails filter with button or link_to using Ransack
你看看这个[Nikil Gupta的文章](http://nikhgupta.com/code/activeadmin/custom-filters-using-ransacker-in-activeadmin-interfaces/)? –