MetaSearch 的便捷函数(例如 .not_in)在 Rails 3.0 和 3.1 的作用域调用内工作。
即使 MetaSearch 在范围之外工作,我也不得不将一些范围重写为“普通 Rails 3.2”而没有 MetaSearch 的便利。当我升级时,它破坏了我的几个应用程序和工具。
想法?我到处都在使用 MetaSearch。甚至写了一个自定义谓词。我希望仍然可能遗漏一些明显的东西。
在 Rails 3.2 上,在引擎内部工作以进行代码分离。当我试图隔离到没有命名空间/子文件夹或引擎的 Vanilla-Rails 时,这似乎并不重要。
注意——我刚刚为 :greater_than_days_ago 编写了我的第一个自定义“Where”谓词 :gt_da 所以 :created_gt_da = 7 将搜索创建的记录 >= 7.days.ago https://github.com/ernie/meta_search/wiki/Handy -开发和测试创建新的方式-%22Where%22-无需重新启动-您的服务器-每次
class Bug < ActiveRecord::Base
# MetaSearch
search_methods :bug_active
## Rails 3.0 (and gems of that time) => 100%), 3.1 pretty sure
## Rails 3.2 error: "undefined method `not_in' for :resolution:Symbol"
scope :bug_active, lambda {|checked|
where(:resolution.not_in => ['ERWITHPM','WONTFIX','WORKSFORME','DATAFIXDEPLOYED','PATCHDEPLOYED','RELEASEDEPLOYED','DUPLICATE','INVALID'] \
, :bug_status.not_in => ['VERIFIED'] ) }
## Rewritten to work in Rails 3.2 without MetaSearch convenience inside of scope
## ... a pinch more work which is why we love MetaSearch!
scope :bug_active_why, lambda {|checked|
where("resolution not in (?)", ['ERWITHPM','WONTFIX','WORKSFORME','DATAFIXDEPLOYED','PATCHDEPLOYED','RELEASEDEPLOYED','DUPLICATE','INVALID'])
.where("bug_status not in (?)", ['VERIFIED'] )
}
end
module Bugzilla
class BugsController < ApplicationController
@p = params[:search]
## MetaSearch works fine here on ":resolution_not_in" from form/search
@p[:resolution_not_in] = ['WONTFIX','WORKSFORME']
@search = Bug
.limit(50)
.where("version like '2012_%p'")
.search(@p)
end
end