Методы ассоциации Do, такие, как те, которые определены
has_many
иbelongs_to
использоватьActiveRecord::Relation
?Можно ли получить объект ActiveRecord :: связь для ассоциацииЕсли да, возможно ли получить объект
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
должны быть очевидны: это потому, что я хочу связать существующую связь и манипулировать запросом в соответствии с другой целью.
Люблю это. Гораздо чище! Я даю вам CHECKMARK. И я соглашаюсь с документацией Arel. Я читал обрывки и кусочки повсюду об этом. Это кажется очень мощным, но без хорошей документации, это может быть довольно раздражающим. :) – John
Блестящий, спасибо большое! –
есть способ вызвать '.scoped' на пользовательский массив, который я создал? – brittohalloran