MetaSearch Gem - методы Rails 3.0 рабочей области перестают работать в Rails 3.2 - PullRequest
1 голос
/ 25 марта 2012

Удобные функции MetaSearch, такие как .not_in, работали в Rails 3.0 и 3.1 внутри вызовов областей.

Мне пришлось переписать некоторые области, чтобы они были "обычными Rails 3.2" без удобства MetaSearch, хотя MetaSearch работает вне области видимости.,И он сломал несколько моих приложений и инструментов при обновлении.

Идеи?Я использую MetaSearch везде.Даже написал пользовательский предикат.Надеюсь, все еще не хватает чего-то очевидного.

В Rails 3.2, работающего внутри движка для разделения кодаПохоже, это не имело значения, когда я пытался изолировать от Vanilla-Rails без пространства имен / подпапок или механизмов.

Примечание. Я только что написал свой первый настроенный предикат "Где": gt_da для: more_than_days_ago так: создал_гт_да= 7 будет искать созданные записи> = 7.days.ago https://github.com/ernie/meta_search/wiki/Handy-way-to-develop-and-test-creating-a-new-%22Where%22-without-restarting-your-server-everytime

    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
...