Как исключить поле из фильтра поиска в Rails Admin? - PullRequest
0 голосов
/ 22 февраля 2020

Когда я ищу пользователя с помощью 'test', он выдает ошибку Postgres, поскольку category является целым числом.

Started GET "/ admin / user? Model_name = user & utf8 =% E2% 9C% 93 & query = test "for :: 1 в 2020-02-21 17:43:44 -0500
Обработка с помощью RailsAdmin :: MainController # index как HTML
Параметры: {" model_name "=>" пользователь "," utf8 "=>" √ "," запрос "=>" тест "}
ActiveRecord :: StatementInvalid - PG :: InvalidTextRepresentation: ОШИБКА: неверный синтаксис ввода для целого числа:" тест "
ЛИНИЯ 1: ... users.name ILIKE '% test%') ИЛИ (users.category IN ('test')) O ...

У меня нет category как настроенное поле для модели.

class User < ApplicationRecord
  include RailsAdminUser

module RailsAdminUser
  extend ActiveSupport::Concern
  included do
    rails_admin do
      list do
        fields :id, :email, :name, :company, :sign_in_count, :current_sign_in_at, :current_sign_in_ip
      end

Я не могу найти, как исключить category из полей, которые он хочет найти. Я в порядке, оставив это поле вне поиска. Кажется, построить запрос с каждым полем. Я пытался скрыть поле category, но это не сработало.

  list do
    configure :category do
      hide
    end

Документы полей: https://github.com/sferik/rails_admin/wiki/Fields

Полные документы: https://github.com/sferik/rails_admin/wiki

rails_admin 1.4.2


Я пытался

  list do
    field :category do
      visible false
      filterable false
    end

Но это не сработало.

1 Ответ

0 голосов
/ 22 февраля 2020

Предыдущий разработчик имел

config\initializers\rails_admin_reload.rb
Rails.application.config.to_prepare do
  RailsAdmin::ApplicationController.class_eval do
    before_action :reload_rails_admin, if: Rails.env.development? # Reloading RailsAdmin Config Automatically

    def reload_rails_admin
      RailsAdmin::Config.reset

      load("#{Rails.root}/config/initializers/rails_admin.rb")

Я добавил

class User < ApplicationRecord
  rails_admin do
    xxx
  end

И

module RailsAdminUser
  extend ActiveSupport::Concern
  included do
    rails_admin do
      xxx

, которые даже не выдавали ошибок, так что это было даже не читая эти файлы или методы. Я предполагаю, что они хотели перезагружать конфигурацию Rails Admin всякий раз, когда она изменялась, но, похоже, она также отбрасывает любые конфигурации всех моделей! Я закомментировал before_action, и он сработал.

Я также добавил

  list do
    field :category do
      visible false
      searchable false
    end

Rails Admin, похоже, кэширует конфигурацию для моделей, поэтому всякий раз, когда вы изменяете конфигурацию (например, searchable true => false) Вы должны перезагрузить сервер. Очень раздражает.

...