通过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_name
和last_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_name
和last_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方法
- 如何使用Rails ActiveRecord进行LEFT OUTER JOIN?
- 使用范围在ActiveRecord中的多个DateTime范围内返回结果
- 如何通过特定的prority对activerecord查询进行排序
- Ruby On Rails – Geocoder – 接近条件
- 查找使用acts_as_taggable_on标记的对象的所有子项
- Ruby / Rails – 我可以使用连接表的范围(或类方法)作为WHERE子句的一部分吗?
- Rails:调用“id”主键方法时出现“Stack level too deep”错误
- Active Record – 获取数据库中的第二个,第三个..项目(无ID)
- 使用ActiveRecord模型生成输入ID