ruby-on-rails - 如何从 Rails Admin 的搜索过滤器中排除字段?
问题描述
当我使用“test”搜索用户时,它给了我一个 Postgres 错误,因为category
它是一个整数。
在 2020-02-21 17:43:44 -0500 开始 GET "/admin/user?model_name=user&utf8=%E2%9C%93&query=test" for ::1
由 RailsAdmin::MainController#index 作为 HTML
参数处理: {"model_name"=>"user", "utf8"=>"√", "query"=>"test"}
ActiveRecord::StatementInvalid - PG::InvalidTextRepresentation: 错误: 整数输入语法无效: "test"
LINE 1: ...users.name ILIKE '%test%') OR (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
但它没有用。
解决方案
以前的开发人员有
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
),都必须重新启动服务器。很烦人。
推荐阅读
- python - JSON 对象必须是 str,而不是 'list' - TypeError
- c# - MongoDB过滤器检查二进制字段是否不为空
- css - Firefox 检查器 - 使用 CTRL + Z 撤消 CSS 声明
- javascript - 是否有一套针对各种 JS polyfill 的现有单元测试?
- java - 映射到dto时如何从Put请求中排除值null
- javascript - OpenQA.Selenium.WebDriverException:'未知错误:arguments[0].click 在尝试使用 ChromeDriver Selenium 单击 svg 元素时不是函数
- javascript - 您如何“组合”ShaderMaterial 和 LambertMaterial?
- stream - 无法从 Kapacitor 流中获取响应 http Post 到本地快递应用程序
- typescript - 如何对原始类型进行类型查找以延迟其返回类型
- airflow - 我们可以在 Airflow 中为每个任务设置 priority_weight 吗?