如何在 ruby on Rails 7 中添加 raw_filter 方法?

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

在 Rails 7 中,我使用 gem 'activerecord-import' 将数据导入到我的数据库并避免多次插入,例如:

  my_books = []
  10.times do |i|
    my_books << Book.new(name: "book #{i}")
  end

  # In the line below the error appears
  Book.import my_books

当我运行代码时:

Book.import my_books

我收到以下错误:

undefined method `raw_filter' for #<ActiveSupport::Callbacks::Callback:0x000055e21adb4ed8 @chain_config={:scope=>:name, :terminator=>#<Proc:0x000055e21ac126e8 /usr/local/bundle/bundler/gems/rails-2432988f9fc0/activesupport/lib/active_support/callbacks.rb:589>}, @name=:validate, @kind=:before, @filter=:cant_modify_encrypted_attributes_when_frozen, @if=[#<Proc:0x000055e21adb5428 /usr/local/bundle/bundler/gems/rails-2432988f9fc0/activerecord/lib/active_record/encryption/encryptable_record.rb:13 (lambda)>], @unless=[]

发生该错误是因为 Rails 7 从 ActiveSupport::Callbacks::Callback 中删除了 raw_filter 方法,该方法在调用 import 时会触发未定义的方法错误

如果您能帮我解决这个错误,我将非常感激。

ruby-on-rails ruby activerecord rubygems activesupport
2个回答
2
投票

看起来这个问题已经在gem中修复了,但更新的版本还没有发布。

我认为你基本上有两个选择:

  1. 等待更新版本发布。也许询问维护人员是否可以提供帮助。或者
  2. 您可能想直接从 GitHub 的
    master
    分支而不是 Rubygems 安装最新版本。但请记住,当正式版本完成后,您肯定想切换回 Rubygems 版本。

如果您想从 GitHub 安装 gem,只需将

Gemfile
中包含 gem 的行更新为:

gem 'activerecord-import', github: 'zdennis/activerecord-import'

0
投票

activerecord-import
gem版本支持rails 7

gem "activerecord-import", ">= 1.3.0"
© www.soinside.com 2019 - 2024. All rights reserved.