Как говорит @Wahaj, готовая загрузка работает только с :includes
, а не :join
.
Вот объяснение из документов:
Address.find (: все,: include =>: addressable)
Это выполнит один запрос для загрузки адресов и загрузки адресуемых адресов по одному запросу для каждого адресуемого типа.Например, если все адресуемые адреса относятся к классу Person или Company, то будет выполнено всего 3 запроса.Список адресуемых типов для загрузки определяется на обратной стороне загруженных адресов.Это не поддерживается, если Active Record должен вернуться к предыдущей реализации активной загрузки и вызовет ActiveRecord :: EagerLoadPolymorphicError.Причина в том, что тип родительской модели является значением столбца, поэтому его соответствующее имя таблицы не может быть помещено в предложения FROM / JOIN этого запроса.
Я думаю, что вы ищете:
current_user.activities.includes(:object)
Как говорят в документах, для каждой ассоциации будет дополнительный запрос.Я не уверен, но вам может потребоваться определить связь, другое направление для рельсов, чтобы знать, какие модели AR искать, например:
class Post < ActiveRecord::Base
has_many :activities, :as => :object
end
Если вы все еще получаете ошибку, вы можетев более ранней версии rails, которая еще не реализовала это.