Ruby on rails 3 Rails 3:创建一个";“空的”;ActiveRecord查询对象
在Rails中,是否可以为给定模型创建“空”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
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