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

StackOverflow https://stackoverflow.com/questions/292922

  •  08-07-2019
  •  | 
  •  

Вопрос

Я использую превосходный 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, а не результаты выполнения цепочечной именованной области с опциями, которые я передал, что я и ожидал.

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

Это было полезно?

Решение

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

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

@results = Product.search().all

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

scroll top