Используют ли методы сопоставления, такие как определенные 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
Пример: * 1 034 *
u = User.first
u.posts
Вызов u.posts
возвращает массив сообщений, а не экземпляр ActiveRecord::Relation
. Мне интересно, возможно ли получить ActiveRecord::Relation
, который используется ассоциацией , если он вообще используется, возможно, с использованием Arel::Table
?
Мое обоснование желания ActiveRecord::Relation
должно быть очевидным: это потому, что я хочу отключить существующую ассоциацию и манипулировать запросом для достижения другой цели.