是否可以为关联获取ActiveRecord :: Relation对象

Joh*_*ohn 20 activerecord associations arel ruby-on-rails-3

  1. 关联方法,例如那些定义has_manybelongs_to利用的方法ActiveRecord::Relation

  2. 如果是这样,是否可以获取ActiveRecord::Relation正在使用的对象.

我们都知道,当使用查询接口创建查询时,Rails 3 在后台大量使用ActiveRecord::Relation对象和Arel::Relation对象.每当我们使用,等查询界面的方法,一个是返回的对象.但是,在调用模型的关联方法时似乎不是这种情况.而是立即执行查询,并返回关联模型的实例或实例数组.selectjoinsActiveRecord::Relation

考虑以下模型:

post.rb

class Post < ActiveRecord::Base
  belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

user.rb

class user < ActiveRecord::Base
  has_many :posts
end
Run Code Online (Sandbox Code Playgroud)

例:

u = User.first
u.posts
Run Code Online (Sandbox Code Playgroud)

调用u.posts返回一组帖子,而不是一个实例ActiveRecord::Relation.我不知道是否有可能得到的ActiveRecord::Relation正在使用的联想,如果它被用在所有的,也许使用Arel::Table

我想要的理由ActiveRecord::Relation应该是显而易见的:这是因为我想链接现有的关联并操纵查询以适应不同的目的.

Mat*_*chu 34

几分钟我使用了where(nil)黑客,然后我有一个脑波并尝试了一些随机的东西:

User.first.posts.scoped
Run Code Online (Sandbox Code Playgroud)

而已!:d

是的,Rails + Arel的记录很差.期待它成熟到我可以实际查找并获得实际答案的程度.