Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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 Rails 3:创建一个";“空的”;ActiveRecord查询对象_Ruby On Rails 3_Activerecord - Fatal编程技术网

Ruby on rails 3 Rails 3:创建一个";“空的”;ActiveRecord查询对象

Ruby on rails 3 Rails 3:创建一个";“空的”;ActiveRecord查询对象,ruby-on-rails-3,activerecord,Ruby On Rails 3,Activerecord,在Rails中,是否可以为给定模型创建“空”ActiveRecord查询对象?空对我来说意味着一个条件,它包括数据库中所有可能的行。我希望以后对该查询应用过滤器 目前我正在使用Booking.where('id>?',0),但我相信一定有一种更好的方法,比如Booking.all()-但是all()返回一个数组,而不是ActiveRecord。这是我的代码: @bookings = Booking.where('id > ?', 0) if !@day.nil? @bookings

在Rails中,是否可以为给定模型创建“空”ActiveRecord查询对象?空对我来说意味着一个条件,它包括数据库中所有可能的行。我希望以后对该查询应用过滤器

目前我正在使用
Booking.where('id>?',0)
,但我相信一定有一种更好的方法,比如
Booking.all()
-但是
all()
返回一个数组,而不是ActiveRecord。这是我的代码:

@bookings = Booking.where('id > ?', 0)
if !@day.nil?
    @bookings = @bookings.where('day = ?',@day)
end
if @project_id && !@project_id.empty?
    @bookings = @bookings.where('project_id = ?', @project_id)
end

谢谢你的帮助

您可以使用此处讨论的作用域方法:

还请注意,
@project\u id.present?

@project\u id&&@项目id.empty?

您可以使用此处讨论的作用域方法:

还请注意,
@project\u id.present?

@project\u id&&@project_id.empty?

使用
unscoped
创建一个空查询,以便在其上构建。(
范围限定
is)


(顺便说一句,如果没有这个,你也可以用
Booking来初始化它。where(true)
而不是
id>0
检查;它更干净,执行起来可能比实际情况检查更好。但是,unscoped更好。)

使用
unscoped
创建一个空查询,这样你就可以在它的基础上进行构建。(
范围限定
is)


(顺便说一句,如果没有此功能,您也可以使用
Booking对其进行初始化。where(true)
而不是
id>0
检查;它更干净,并且可能比实际情况检查执行得更好。但是,unscoped更好。)

Booking.scoped应该适合你。谢谢-这就是我想要的。Booking.scoped应该适合你。谢谢-这就是我想要的
@bookings = Booking.unscoped
if !@day.nil?
    @bookings = @bookings.where('day = ?',@day)
end
if @project_id && !@project_id.empty?
    @bookings = @bookings.where('project_id = ?', @project_id)
end