Использование scope_builder для условного построения именованной области в методе поиска () модели Active Record
-
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