рельсы 3 рельсовая нагрузка не работает должным образом - PullRequest
0 голосов
/ 22 декабря 2010
class User
  has_many :subscriptions
  ...
end

class Subscription
  belongs_to :user
  ...
end

когда я делаю User.includes(:subscriptions), журнал говорит:

Пользовательская нагрузка (0,3 мс) SELECT users. * ОТ users Загрузка подписки (0,2 мс) SELECTsubscriptions. * FROM subscriptions WHERE (subscriptions .user_id IN (1,2,3,5))

я бы ожидал один запрос на соединение, но я невидите это.

У кого-нибудь есть объяснение этому поведению?

1 Ответ

4 голосов
/ 22 декабря 2010

Это ожидаемое поведение, поскольку в определенных ситуациях оно может быть более эффективным, чем объединение.Начиная с Rails 2.1, он был изменен для выполнения как минимум 2 запросов.Прочитайте это, как оно относится к: include (теперь включает в Rails 3):

http://akitaonrails.com/2008/05/25/rolling-with-rails-2-1-the-first-full-tutorial-part-2

И дополнительную информацию в направляющих рельсов:

http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations

Вместо этого вы можете использовать joins, в зависимости от сценария.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...