ActiveAdmin基于getter创建自定义过滤器

时间:2013-11-29 03:46:23

标签: ruby-on-rails activeadmin ransack

我有一个带过滤器的ActiveAdmin页面。 我想基于getter(在资源上定义的方法,而不是ActiveRecord属性)设置自定义过滤器。

class House
  def is_enchanted?
    # Ask to witches and ghosts...
  end
end

这是ActiveAdmin资源:

ActiveAdmin.register House do
  filter :is_enchanted?
end

以上代码引发了以下异常:

undefined method `is_enchanted?_eq' for #<Ransack::Search:0xc188178>

2 个答案:

答案 0 :(得分:1)

你可以使用范围

模型/ house.rb

class House
  scope :is_enchanted?, 
      #where(....) 
end

admin / house.rb

ActiveAdmin.register House do
  scope :is_enchanted?
end

答案 1 :(得分:0)

您可以创建名为“ransackers”的自定义Ransack搜索方法。没有任何官方文档,因此您需要在GitHub上的Ransack问题跟踪器上进行一些搜索,以进行类似这样的讨论:https://github.com/activerecord-hackery/ransack/issues/36