-
Используются ли методы ассоциации, такие как те, которые определены
has_manyиbelongs_to,ActiveRecord::Relation? -
Если да, возможно ли получить объект
ActiveRecord::Relation, который используется.
Мы все знаем, что Rails 3 сильно использует объекты ActiveRecord::Relation и Arel::Relation объекты в фоновом режиме при создании запросов с помощью Query Interface. Всякий раз, когда мы используем методы select, joins и т.д. Интерфейса запросов, возвращается объект ActiveRecord::Relation. Однако это не похоже на вызов метода ассоциации модели. Вместо этого запрос выполняется немедленно, и возвращается экземпляр или массив экземпляров связанной модели.
Рассмотрим следующие модели:
post.rb
class Post < ActiveRecord::Base
belongs_to :user
end
user.rb
class user < ActiveRecord::Base
has_many :posts
end
Пример:
u = User.first
u.posts
Вызов u.posts возвращает массив сообщений, а не экземпляр ActiveRecord::Relation. Мне интересно, можно ли получить ActiveRecord::Relation, который используется ассоциацией, если он вообще используется, возможно, используя Arel::Table?
Мое рассуждение о желании ActiveRecord::Relation должно быть очевидным: это потому, что я хочу связать существующую ассоциацию и манипулировать запросом в соответствии с другой целью.