has_many
和belongs_to
定义的方法)是否使用ActiveRecord::Relation
? ActiveRecord::Relation
对象。 我们都知道,在使用Query Interface创建查询时,Rails 3在后台大量使用
ActiveRecord::Relation
对象和Arel::Relation
对象。每当我们使用查询接口(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
的理由应该很明显:这是因为我想链接现有的关联并操纵查询以适应不同的目的。 最佳答案
几分钟后,我使用了where(nil)
hack,然后脑筋急转,尝试了一些随机操作:
User.first.posts.scoped
而已! :D
是的,Rails + Arel的文档确实很少。期待它成熟到可以实际查找并获得实际答案的地步。
关于activerecord - 是否有可能获得ActiveRecord::Relation对象的关联,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4176716/