Найти материал (но не в производстве) - PullRequest
0 голосов
/ 16 августа 2010

Используя учебник «Найти вещи (быстрый и грязный)» в «Рецептах Advance Rails», я могу найти материал в среде разработки, но не в производственной среде.

NoMethodError: undefined method `searchable_by'

У меня есть этот код в "lib / searchable.rb"

module Searchable

  def searchable_by(*_column_names)
    @search_columns = []
    [column_names].flatten.each do |name|
      @search_columns << name
    end
  end

  def search(query, fields=nil, options={})
    with_scope :find => {
      :conditions => search_conditions(query, fields) } do
      find :all, options
      end
  end

  def search_conditions(query, fields=nil)
    return nil if query.blank?
    fields ||= @search_columns

    words = query.split(",").map(&:split).flatten

    binds = {}
    or_frags = []
    count = 1

    words.each do |word|
      like_frags = [fields].flatten.map { |f| "LOWER(#{f}) LIKE :word#{count}" }
      or_frags << "(#{like_frags.join(" OR ")})"
      binds["word#{count}".to_sym] = "%#{word.to_s.downcase}%"
      count += 1
    end

    [or_frags.join(" AND "), binds]
  end
end

и в моем 'config / initializers / core_extensions.rb'

ActiveRecord::Base.extend Searchable

Я бродил по Интернету и обнаружил, что люди говорят, что если я изменю config.cache_classes на false, это должно сработать: но это не так.

Я никогда не пробовал использовать дополнительные скрипты в своих приложениях, поэтомуЯ, наверное, упускаю что-то довольно простое здесь.

Любая помощь будет оценена!

ОБНОВЛЕНИЕ: Дополнительная информация

Я указываю это вмодель (app / models /андидат.rb)

class Candidate < ActiveRecord::Base
  searchable_by :first_name, :surname, :experience, :skills, :looking_for, :hours_required, :location, :more_details
end

И я вызываю его в контроллере (app / controllers / candid_controller.rb)

class CandidatesController < ApplicationController
  def index
    @candidates = Candidate.visible
  end

  def search
    @candidates = Candidate.visible.search(params[:q])
  end

end

(видимым является только named_scope)

Любая помощь будет очень признательна.

1 Ответ

1 голос
/ 18 августа 2010

у вас есть опечатка для searchable_by * _column_names должно быть * column_names, как только это будет исправлено, обязательно перезапустите ваш сервер rails.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...