How to fix Ransack undefined method "_eq", when using ActiveAdmin with ":through" relationships in your model?

StackOverflow https://stackoverflow.com/questions/21707959

Question

I have a Rails 4.0.1 application, using gems activeadmin 1.0.0.pre and ransack 1.1.0.

Using ActiveAdmin, I have many errors like this one :

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)

There is a pattern "_eq" for each undefined method :

aws_instance_type_clients_id_eq
user_roles_id_eq

Any idea ?

Was it helpful?

Solution

I found the answer right here : undefined method `users_user_id_eq' for Ransack::Search

There is also a post here : weird error popped up with active admin that looks to be the same problem description.

It seems that Ransack (used by ActiveAdmin) do not like has many .. :through relationships.

Example :

If you have a user.rb that has many :roles, :through => :user_roles

This will give you the error : undefined method user_roles_id_eq

To fix (not really fix.. but avoid to get an error) the bug, edit your "ActiveAdmin.register User" file, and add : remove_filter :user_roles

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top