MySQL 不支持 ILIKE 查询 (have_a_version_with_changes、where_object_changes、其他区域)

作者: CloCkWeRX创建于 2026年1月14日更新于 2026年7月16日

感谢您的贡献!由于志愿者有限,不符合这些说明的问题将不会有任何评论而被关闭。请勾选以下选项:- [x] 这不是一个使用问题,这是一个错误报告 - [x] 此错误可以通过我提供的脚本重现 - [x] 此错误可以在 paper_trail 宝石的最新版本中重现 由于志愿者有限,我们无法回答使用问题。请在 StackOverflow 上提问此类问题。错误报告必须使用以下模板: # STEP ONE: 你使用了哪些版本? # 注意:我必须将此内容添加到 Gemfile 中 gemfile(true) do ruby "3.4.4" source "https://rubygems.org" gem "activerecord", "~> 8" gem "rspec" # 刻意不使用 minitest,因为 rspec 测试辅助就是我找到的 gem "paper_trail", "17.0.0", require: false gem "trilogy" require "active_record" # require "minitest/autorun" require "rspec" require "rspec/autorun" require 'paper_trail/frameworks/rspec' require "logger" # 如果可能的话,请使用 sqlite 来提交错误报告。 ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:") # MySQL 8 使用 DATABASE_URL=trilogy://[email protected]/example bundle exec ruby script.rb ActiveRecord::Base.establish_connection(adapter: "trilogy", url: ENV['DATABASE_URL']) ActiveRecord::Base.logger = nil ActiveRecord::Schema.define do # STEP TWO: 在这里定义你的表。 create_table :users, force: true do |t| t.text :first_name, null: false t.timestamps null: false end create_table :versions, force: true do |t| t.string :item_type, null: false t.integer :item_id, null: false t.string :event, null: false t.string :whodunnit t.json :object t.json :object_changes t.datetime :created_at end add_index :versions, %i[item_type item_id] end ActiveRecord::Base.logger = Logger.new(STDOUT) require "paper_trail" # STEP FOUR: 在这里定义你的 AR 模型。 class User < ActiveRecord::Base has_paper_trail end # STEP FIVE: 请写一个演示你的问题的测试。 describe User do with_versioning do describe 'have_a_version_with_changes matcher' do let!(:user) { User.create(first_name: "Jane") } it '可以对版本更改进行断言' do user.update!(first_name: "Susy") expect(user).to have_a_version_with_changes name: "Susy" end end end end # STEP SIX: 使用 ruby my_bug_report.rb 运行此脚本

内容来源: paper-trail-gem/paper_trail