ransack gem是否适用于MongoDB?
我在下面定制了我的案例:
def index
@q = Person.search(params[:q])
@people = @q.result(distinct: true)
end
我有错误: 未定义的方法`结果'为零:NilClass
这里https://github.com/ernie/ransack描述了ActiveRecord,没有提到它只适用于ActiveRecord ......
答案 0 :(得分:1)
直到3天前,你无法将mansoid用于Ransack,但现在有了这个拉取请求https://github.com/activerecord-hackery/ransack/pull/407,这是可能的。只需使用主分支
gem 'ransack', github: 'activerecord-hackery/ransack'
你可以进行搜索
@q = Person.search(params[:q])
@people = @q.result # => Mongoid::Criteria
# or you can add more Mongoid queries
@people = @q.result.active.order_by(updated_at: -1).limit(10)
答案 1 :(得分:0)
你可以在他们的list of adapters上看到他们只支持活动记录版本,我不熟悉那个gem,但是就我所理解的那样公平,它会在数据库上生成查询。由于mongodb不是关系数据库,它不了解SQL,因此gem根本不起作用。
答案 2 :(得分:0)
您可以尝试Ransack Mongo。
# GET /people
def index
query = RansackMongo::Query.new
selector = query.to_query(params[:q])
@people = Person.where(selector)
end