在我的app/models/active_storage/attachment.rb
文件中,我使用了以下代码
class ActiveStorage::Attachment < ApplicationRecord
belongs_to :blob, class_name: "ActiveStorage::Blob
def self.ransackable_attributes(auth_object = nil)
["blob_id", "created_at", "id", "name", "record_id", "record_type"]
end
end
字符串
当使用Active Storage创建Active Admin时,我遇到了一个搜索错误。为了解决这个问题,我在模型中使用了defined the ransackable方法。在我的app/models/user.rb
中,我使用了
has_one_attached :profile_image
型
当我打开这个链接http://127.0.0.1:3000/users/1它显示此错误:
unknown keywords: :class_name, :as, :inverse_of
型
当我打开这个链接http://127.0.0.1:3000/admin它打开成功
enter image description here的
我在我的app/models/user.rb
文件中使用了inverse of,但是它不起作用,我已经检查了我所有的模式文件,它正确地生成了active storage of。
1条答案
按热度按时间rqenqsqc1#
你不应该在内置的
ActiveStorage::Attachment
类中定义或重新定义任何关联。当然你也不应该改变这个类的继承!查看source,您将看到父类是
ActiveStorage::Record
。如果你需要允许使用ransack进行搜索,只需要使用ransack方法重新打开这个类。只定义ransack方法,其他的不要改变
可以使用初始化器来修补内置类
字符串
请注意这里的
on_load
钩子,它来自上面的源代码。这是一个重要的时刻,因为只有当需要的类已经加载时,你才能成功地打补丁。还要注意,在旧版Rails中,继承是不同的:
ActiveStorage::Attachment
在5.2和6.0版本中的父类是ActiveRecord::Base
。