Мне нужно предварительно установить ассоциации модели со сложными условиями. NO, includes
не работает для меня. Он генерирует неправильный SQL для моей задачи.Как установить область предварительной загрузки для Rails-ассоциаций :: Preloader?
я взгляну на ActiveRecord::Associations::Preloader
и обнаружили, что он взять preload_scope
аргумент:
http://apidock.com/rails/v4.2.1/ActiveRecord/Associations/Preloader/preload
def preload(records, associations, preload_scope = nil)
# ...
end
Но я не могу найти ни одного примера использования. Что такое preload_scope
в этом случае? И как я могу использовать его для фильтрации ассоциаций? Спасибо!
О, спасибо, это работает! Но почему это создает так много запросов? «Пользовательская нагрузка (12,1 мс) SELECT« пользователи ». * FROM« users »WHERE (created_at> '2015-01-01') И« пользователи ».« Cat »IN (52, 50, 51, 53) Пользовательская загрузка (1,2 мс) SELECT «пользователи». * FROM «users» WHERE (created_at> '2015-01-01') Пользовательская нагрузка (5.1ms) SELECT «users». * FROM «users» ' – Vladimir
Можете ли вы опубликовать ваш код? –
'users = Car.find (1) .users rows = users.to_a ActiveRecord :: Ассоциации :: Preloader.new.preload (rows,: действия, Struct.new (: values,: bind_values) .new ({where: "created_at> '2015-01-01'"}, [])) ' – Vladimir