Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 如何将`:include`添加到默认范围?_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 3 如何将`:include`添加到默认范围?

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

搜索“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 ASC') }

这是Rails API中记录的方法,而不是您正在使用的散列参数方法。

是的,使用该样式,但使用
includes
(复数)可以工作。还发现使用哈希样式,使用
:joins
而不是
:include
是有效的。include本身通常被解释为Ruby include关键字,它不喜欢:)@Ghoti
include
不是关键字,它是一个方法(
定义的?(include)#=>“方法”
),因此可以被覆盖。当然,
:include
只是一个不相关的符号。在rails 4中,您必须为此
默认范围使用块{includes(:author)}