如何在模型中使用带有":through"关系的ActiveAdmin时修复Ransack未定义方法"_eq"?

Eri*_*oie 8 ruby-on-rails activeadmin ransack ruby-on-rails-4

我有一个Rails 4.0.1应用程序,使用gems activeadmin 1.0.0.pre和ransack 1.1.0.

使用ActiveAdmin,我有很多这样的错误:

NoMethodError in Admin::MyModel#action
Showing [...]/views/active_admin/resource/action.html.arb where line #1 raised:

undefined method `applied_boundaries_id_eq' for #<Ransack::Search:0x0..>
Extracted source (around line #1): insert_tag renderer_for(:index)
Run Code Online (Sandbox Code Playgroud)

每个未定义的方法都有一个"_eq"模式:

aws_instance_type_clients_id_eq
user_roles_id_eq
Run Code Online (Sandbox Code Playgroud)

任何的想法 ?

Eri*_*oie 14

我在这里找到了答案:Ransack :: Search的未定义方法`users_user_id_eq'

这里还有一个帖子:主动管理员弹出奇怪的错误,看起来是相同的问题描述.

似乎Ransack(由ActiveAdmin使用)不喜欢has many .. :through关系.

示例:

如果你有user.rb这个has many :roles, :through => :user_roles

这会给你错误: undefined method user_roles_id_eq

要修复(不是真正修复..但要避免出错),请编辑"ActiveAdmin.register User"文件,然后添加: remove_filter :user_roles