我想在Rails中搜索具有多个条件的表。我正在使用Active record和rails 3.1.0版。
我有Movies对象,想要在rails中实现以下等价物:
Select * from Movies where rating = 'R' OR rating = 'PG'
我尝试了以下但不起作用
@filtered = Movies.find(:all, :conditions => { :rating => 'R', :rating => 'PG' })
您能否提供帮助以编写上述SQL查询的等效内容。
答案 0 :(得分:10)
一种方法是使用以下方法构建“IN”条件:
@filtered = Movie.where(:rating => ['R', 'PG']).all
编辑:我从“电影”中将您的班级改为“电影”。我认为这就是你想要的。
答案 1 :(得分:5)
在Rail 4中,查找多个条件,例如考虑使用Profile
和first_name
last_name
Profile.find_by first_name: 'stack', last_name: 'flow'
查找与指定条件匹配的第一条记录。没有隐含的订单,所以如果订单很重要,您应该自己指定。 如果未找到记录,则返回nil
Profile.find_by! first_name: 'stack', last_name: 'flow'
与find_by一样,除非没有找到记录,否则会引发ActiveRecord :: RecordNotFound错误。
有关详细信息,请参阅Rails Finder Method
1:http://api.rubyonrails.org/classes/ActiveRecord/FinderMethods.html#method-i-find_byIn Rail 4,查找多个条件,例如考虑使用Profile
和first_name
last_name
Profile.find_by first_name: 'stack', last_name: 'flow'
查找与指定条件匹配的第一条记录。没有隐含的订单,所以如果订单很重要,您应该自己指定。 如果未找到记录,则返回nil
Profile.find_by! first_name: 'stack', last_name: 'flow'
与find_by一样,除非没有找到记录,否则会引发ActiveRecord :: RecordNotFound错误。
有关详细信息,请参阅Rails Finder Method
答案 2 :(得分:4)
我猜那将是
Movie.where("rating = ? OR rating = ?", 'R', 'PG')
查看指南以获取更多信息:http://guides.rubyonrails.org/active_record_querying.html#conditions
我建议改为使用IN
语句。
答案 3 :(得分:4)
您可以使用以下方式执行此操作:
Movie.where(:rating => ['R','PG'])