Ruby on rails 3 如何将`:include`添加到默认范围?
搜索“net”时,我发现我应该使用Ruby on rails 3 如何将`:include`添加到默认范围?,ruby-on-rails-3,Ruby On Rails 3,搜索“net”时,我发现我应该使用:include,但这似乎并没有改变生成的SQL查询: def Post #model default_scope :order => 'created_at DESC', :include => :author end 无论是否使用:include,SQL都是相同的(即,它仅从posts表中进行选择) 这样做的方法是什么?如果你这样做怎么办 default_scope { includes(:author).order('created_at
:include
,但这似乎并没有改变生成的SQL查询:
def Post #model
default_scope :order => 'created_at DESC', :include => :author
end
无论是否使用:include
,SQL都是相同的(即,它仅从posts表中进行选择)
这样做的方法是什么?如果你这样做怎么办
default_scope { includes(:author).order('created_at ASC') }
这是Rails API中记录的方法,而不是您正在使用的散列参数方法。是的,使用该样式,但使用
includes
(复数)可以工作。还发现使用哈希样式,使用:joins
而不是:include
是有效的。include本身通常被解释为Ruby include关键字,它不喜欢:)@Ghotiinclude
不是关键字,它是一个方法(定义的?(include)#=>“方法”
),因此可以被覆盖。当然,:include
只是一个不相关的符号。在rails 4中,您必须为此默认范围使用块{includes(:author)}