升级到 Rails 5 和 Mongoid 7 后的 NoMethodError 搜查

NoMethodError ransack after upgrading to Rails 5 and Mongoid 7

升级到 Rails 5 和 Mongoid 7 后,我的 Ransack 在 类 中不可见。例如代码:

users = User.ransack(params[:q])
render json: users

应用程序因错误而崩溃

NoMethodError (undefined method `ransack' for User:Class)

在 Rails 4.2 和 Mongoid 4 上一切正常。

当前 Gemfile:

ruby '2.5.1'
gem 'rails', '5.2.0'
gem 'ransack', git: 'https://github.com/activerecord-hackery/ransack', require: 'mongoid' (version 1.8.8)
gem 'mongoid', '~>7' (version 7.0.1)

有什么想法吗?

对我来说,解决方案是添加

gem 'ransack-mongoid', github: 'activerecord-hackery/ransack-mongoid'

到 Gemfile。它不维护,将来可能会停止维护,因为正在搜索维护者。

再次增加了对mongoid的支持。但是,我无法 select 任何数据,得到

User.ransack().result throws

Mongoid::Errors::CriteriaArgumentRequired - message:
  Calling Criteria methods with nil arguments is not allowed.
summary:
  Arguments to Criteria methods cannot be nil, and most Criteria methods require at least one argument. Only logical operations (and, or, nor and not), `all' and `where' can be called without arguments. The method that was called with nil argument was: where.
resolution:
  Invoke Criteria methods with non-nil arguments or omit the respective invocations.:

由于我也必须解决这个问题,所以我会进一步研究它。