Стремительная загрузка извлекает все поля, хотя выбор явно указан

У меня есть такой запрос,

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

Другие вопросы по тегам