如何使用Rails"find"方法执行AND或OR查询?

JP *_*son 5 ruby-on-rails

我们假设我有一个名为"产品"的模型.我们假设产品有三个字段.这些字段是'name'(类型字符串),'cost'(类型整数)和'is_visible'(类型bool).

1)如何使用Rails"查找"方法进行搜索查询(如果有其他方法,那很好),以便我可以搜索成本大于100且is_visible为真的所有产品?

2)如果我们想要改变它以搜索名称!=''OR cost == 0怎么办?

这不是一个SQL问题,但我想Rails有一种方法可以在不使用SQL的情况下对数据库进行AND/OR查询.

谢谢!

sco*_*ttd 13

您需要在find方法上使用conditions选项.conditions选项可以是Hash,Array或String.条件有很多选项,所以我建议您阅读API帮助.例如,如果你想(1):

Product.find(:all, :conditions => ['cost > ? and is_visible is true', 100])
Run Code Online (Sandbox Code Playgroud)

或(2)

Product.find(:all, :conditions => ["name != '' or cost =0])
Run Code Online (Sandbox Code Playgroud)

  • 实际上你包含的所有内容:条件将直接嵌入到ActiveRecord生成的SELECT语句中 - 所以这肯定与SQL有关. (2认同)