无法使用 Ransack 4 加载 ActiveAdmin 模型

问题描述 投票:0回答:1

我得到了臭名昭著的:

Ransack 明确需要 ActiveStorage::Attachment 属性 列入允许搜索范围。定义一个

ransackable_attributes
ActiveStorage::Attachment
模型中的方法。

...错误。这是因为我的 app/models/user.rb 有:

has_one_attached :avatar

所以出于某种原因它希望我声明这一点。如果我注释掉该行...那么我就可以在 activeadmin 中加载用户了。但我宁愿解决问题。

我的 photo.rb 也有同样的问题,因为它还附加了一个 activestorage 文件。以前 Activeadmin 中没有模型会加载。

但现在我已经将这些行添加到 application_record.rb 中:

def self.ransackable_associations(auth_object = nil)
    @ransackable_associations ||= reflect_on_all_associations.map { |a| a.name.to_s }
  end

  def self.ransackable_attributes(auth_object = nil)
    @ransackable_attributes ||= column_names + _ransackers.keys + _ransack_aliases.keys + attribute_aliases.keys
  end

所以现在除了我的用户和照片模型之外,大多数模型都可以工作。

以下是非常简单的照片模型:

应用程序/模型/photo.rb

class Photo < ApplicationRecord

has_one_attached :pic


end

我也尝试过实际列出掠夺的属性...也没有骰子。

有什么办法可以让它启动并运行吗?

ruby-on-rails activeadmin ruby-on-rails-7 ransack
1个回答
0
投票

我实际上在基于 github 上已关闭问题的讨论中找到了答案:

https://github.com/activeadmin/activeadmin/discussions/8077

没有人找到“正确”的解决方案......但每个人似乎都在使用的解决方法是从搜查搜索中删除 activestorage。所以就我而言:

应用程序/管理/照片.rb

ActiveAdmin.register Photo do

remove_filter :pic_attachment, :pic_blob

end

另外...如果您有多个附件。 (不要忘记复数“has_many”附件......否则它们将不起作用。)

应用程序/admin/user.rb

ActiveAdmin.register User do
   remove_filter :avatar_attachment, :avatar_blob, :cpics_attachments, :cpics_blobs
end

基本上就是这样。 Ransack 将忽略附件和斑点,您终于可以开始新的一天了。 (尽管我的一天已经结束了,我花了很多时间才弄清楚这一点。)

© www.soinside.com 2019 - 2024. All rights reserved.