通过rails中的多个条件查找

我想在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查询的等价物。

一种方法是建立一个“IN”条件:

  @filtered = Movie.where(:rating => ['R', 'PG']).all 

编辑:我从“电影”中将你的课程改为“电影”。 我认为这就是你想要的。

我想那就是

 Movie.where("rating = ? OR rating = ?", 'R', 'PG') 

有关更多信息,请查看指南: http : //guides.rubyonrails.org/active_record_querying.html#conditions

我建议改用IN语句。

你可以使用:

 Movie.where(:rating => ['R','PG']) 

在Rail 4中,查找具有多个条件的示例,例如,考虑使用first_namelast_name查找Profile

 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方法

1 : http : //api.rubyonrails.org/classes/ActiveRecord/FinderMethods.html#method-i-find_byIn Rail 4,查找多个条件,例如考虑使用first_namelast_name查找Profile

 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方法