Стремительная загрузка извлекает все поля, хотя выбор явно указан
У меня есть такой запрос,
company.users.select("users.id, users.state").includes(:organization)
здесь я жду загрузки ассоциации organization
, Я ожидал, что атрибуты id и user_id будут извлечены из объектов, но затем я получу все поля извлеченные.
Это так, рельсы ведут себя, когда мы стремимся загрузить или я что-то здесь упускаю?
1 ответ
В вашем случае вы получите всех пользователей компании, а не организаций.
Стремительная загрузка означает предварительную загрузку строк базы данных. Он не будет получать только атрибуты. Он загружает все связанные строки.
Например:
comments = Comment.all(:select => "users.name,comment_text", :include => :user)
Здесь он не просто загружает имена из пользовательской таблицы. Он получит все строки пользователей из базы данных. Таким образом, вам не нужно запускать дополнительные запросы. И еще одна вещь, когда вы используете include
Предложение select игнорируется, если у вас есть атрибуты включенных таблиц. Для получения дополнительной информации просмотрите Райан Бейтс rialscast на соединениях и включают в себя: http://railscasts.com/episodes/181-include-vs-joins