[Из песочницы] Различные методы загрузки ассоциаций в Ruby on Rails

Rails предоставляют нам 4 различных способа загрузки ассоциаций: preload, eager_load, includes и joins. Рассмотрим каждый из них: Preload Этот метод загружает ассоциации в отдельном запросе: User.preload (: posts).to_a

# => SELECT «users».* FROM «users» SELECT «posts».* FROM «posts» WHERE «posts».«user_id» IN (1) Т.к. preload всегда создает два отдельных запроса, то мы не можем использовать таблицу posts в условии выборки: User.preload (: posts).where («posts.desc='ruby is awesome'»)

# => SQLite3:: SQLException: no such column: posts.desc: SELECT «users».* FROM «users» WHERE (posts.desc='ruby is awesome') А таблицу users — можем: User.preload (: posts).where («users.name='Neeraj'»)

# => SELECT «users».* FROM «users» WHERE (users.name='Neeraj') SELECT «posts».* FROM «posts» WHERE «posts».«user_id» IN (3) Читать дальше →

© Habrahabr.ru