Использование scope_builder для условного построения именованной области в методе поиска () модели Active Record - PullRequest
2 голосов
/ 15 ноября 2008

Я использую превосходное scope_builder Райана Бейтса, чтобы условно построить новую именованную область для использования в методе search () модели Active Record.

Пример документации показывает, что вы можете сделать что-то вроде следующего:

  # in product model
  def self.search(options)
    scope_builder do |builder|
      builder.released.visible
      builder.cheap if options[:cheap]
    end
  end

Но когда я включаю соответствующую версию приведенного выше кода в мою модель и вызываю search () с некоторыми переданными параметрами, я получаю возвращенный экземпляр ScopeBuilder :: Builder, а не результаты выполнения связанной именованной области с вариантами, которые я передал, что я и ожидал.

Мой вопрос: Как получить результаты выполнения компоновщика (опций) вместо экземпляра компоновщика?

1 Ответ

2 голосов
/ 16 ноября 2008

Похоже, что модуль scope_builder был предназначен для возврата экземпляра scope-builder, поэтому вам придется получать результаты из экземпляра.

Попробуйте использовать .all для получения результатов. Например что-то вроде:

@results = Product.search().all

Из его тестов похоже, что это должно работать (строка 47: "должна быть возможность построить область действия в блоке").

...