Используя учебник «Найти вещи (быстрый и грязный)» в «Рецептах 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)
Любая помощь будет очень признательна.