关联方法,例如由定义
has_many
和belongs_to
利用的方法ActiveRecord::Relation
吗?如果是这样,是否可以获得
ActiveRecord::Relation
正在使用的对象。
我们都知道 Rails 3在使用Query InterfaceActiveRecord::Relation
创建查询时大量使用对象,并且Arel::Relation
在后台使用对象。每当我们使用查询接口的,等方法时,都会返回一个对象。但是,在调用模型的关联方法时,情况似乎并非如此。相反,查询会立即执行,并返回关联模型的一个实例或实例数组。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
应该很明显:这是因为我想链接现有的关联并操纵查询以适应不同的目的。