【问题标题】:MongoID throwing wrong number of arguments for any exception. Ruby 3.0.0 + Rails 6.1.3.1MongoID 为任何异常抛出错误数量的参数。 Ruby 3.0.0 + Rails 6.1.3.1
【发布时间】:2021-03-29 17:09:11
【问题描述】:

我的堆栈是

红宝石 3​​.0.0 导轨 6.1.3.1 Mongoid 7.1.2

Mongo 在应该引发其他异常时总是抛出相同的异常:

ArgumentError (wrong number of arguments (given 3, expected 1..2))

例如:

我有一个字段的唯一性验证:

irb(main):010:0> Model.create!(field: 'sape')
=> #<Model _id: 606207343dcde26a1595eb48, created_at: 2021-03-29 16:58:28.006091 UTC, updated_at: 2021-03-29 16:58:28.006091 UTC, field: "sape">

irb(main):011:0> Model.create!(field: 'sape')
Traceback (most recent call last):
        1: from (irb):11:in `<main>'
ArgumentError (wrong number of arguments (given 3, expected 1..2))

find_by 也一样: 如果响应找到一个,它会检索它:

irb(main):012:0> Model.find_by(field: 'sape')
=> #<Model _id: 606207343dcde26a1595eb48, created_at: 2021-03-29 16:58:28.006 UTC, updated_at: 2021-03-29 16:58:28.006 UTC, field: "sape">

但如果不存在:

irb(main):001:0> Model.find_by(field: 'sape')
Traceback (most recent call last):
        1: from (irb):1:in `<main>'
ArgumentError (wrong number of arguments (given 2, expected 0..1))

这是我的模特:

class Model
  include ActiveModel::Validations
  include Mongoid::Document
  include Mongoid::Timestamps::Created
  include Mongoid::Timestamps::Updated

  field :field, type: String, default: nil

  index({ field: 1 }, { unique: true })
end

【问题讨论】:

    标签: ruby-on-rails mongoid


    【解决方案1】:

    Mongoid 目前不支持 Ruby 3,不应使用。

    你可以看到哪些 Rubies Mongoid 支持here

    【讨论】:

    • 感谢您的回复,您有什么推荐的支持 ruby​​ 3 的映射器吗?
    • 驱动也不支持Ruby 3。除非您希望提供我建议使用 Ruby 2 的支持。
    • 到今天好像还不支持。我遇到了同样的问题,一旦我迁移到 Ruby 2.7,问题就得到了解决。
    【解决方案2】:

    更新mongoid gem,它将被修复

    gem 'mongoid', '~&gt; 7.3.0'

    【讨论】:

      猜你喜欢
      • 2012-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      • 2020-06-15
      相关资源
      最近更新 更多