Как исправить неопределенный метод Ransack _eq при использовании ActiveAdmin с отношениями :through в вашей модели?

У меня есть приложение 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)

Для каждого неопределенного метода существует шаблон "_eq":

aws_instance_type_clients_id_eq
user_roles_id_eq

Есть идеи ?


person Eric Lavoie    schedule 11.02.2014    source источник


Ответы (1)


Я нашел ответ прямо здесь: неопределенный метод `users_user_id_eq' для Ransack::Search

Здесь также есть сообщение: при активном администраторе появилась странная ошибка это похоже на то же описание проблемы.

Похоже, 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

person Eric Lavoie    schedule 11.02.2014
comment
В то время (несколько лет) я не мог по-настоящему это исправить. - person Eric Lavoie; 08.11.2017