Ruby on rails 在ActiveAdmin筛选器中使用ActiveRecord作用域

Ruby on rails 在ActiveAdmin筛选器中使用ActiveRecord作用域,ruby-on-rails,ruby,activerecord,activeadmin,Ruby On Rails,Ruby,Activerecord,Activeadmin,在我的rails项目中,我有一个模型: class Panel < ActiveRecord::Base has_many :surveys scope :by_survey_name, ->(survey_name) { joins(:surveys).where('surveys.survey_name LIKE (?)', "%#{survey_name}%") } end class面板(调查名称){ 联接(:surveys).where('surve

在我的rails项目中,我有一个模型:

class Panel < ActiveRecord::Base
  has_many :surveys

  scope :by_survey_name, ->(survey_name) {
    joins(:surveys).where('surveys.survey_name LIKE (?)', "%#{survey_name}%")
  }
end
class面板(调查名称){
联接(:surveys).where('surveys.survey_name LIKE(?),“%{survey_name}%”)
}
结束
问题是如何在activeadmin fiter中使用此作用域?

添加到模型:

  def self.ransackable_scopes(_auth_object = nil)
    [:by_survey_name]
  end
然后在资源中:

  filter :by_survey_name, as: :string

嗯,这似乎不再起作用了(对于Ransack::Search,缺少了“by_survey_name_contains”方法)。这真的是创建具有作用域的筛选器的正确方法吗?有没有关于这方面的文档?我以前遇到过这个问题(缺少“\u contains”),在这种情况下,解决方案是在最后用“\u in”重命名范围,以绕过一些逻辑。但目前我测试了一个类似的模型,而且“:by_survey_name”对我来说仍然有效。AAv2.9.0,Rails 6.0.3.7