Jos*_*arl 1 activerecord ruby-on-rails
在Rails应用程序中,使用ActiveRecord where方法检查属性是零还是空的最简洁方法是什么?
这有效,但似乎应该有一个更好的,内置的方式来做到这一点:
@items = Item.where :context => nil || ''
Run Code Online (Sandbox Code Playgroud)
当您的搜索包含"where"等词语时,Google-fu很难做到很多.
Luc*_*ain 16
你所拥有的东西是行不通的.
@items = Item.where context: nil || ''
Run Code Online (Sandbox Code Playgroud)
真的评估为:
@items = Item.where context: ''
Run Code Online (Sandbox Code Playgroud)
因此,您将找不到context设置为nil使用此方法的项目.
边注
thing || other以这种方式使用永远不会奏效.你可以不写if item == 'test' || 'something',并期望它能情况无效item的'something'.它只会在情况下工作item的'test'.要使这样的东西起作用,你需要写if item == 'test' || item == 'something'.这不是人类说话的方式,而是计算机阅读的方式.
回到主赛事
编写可行的查询的一种方法是:
Item.where("context = ? or context = ?", nil, '')
Run Code Online (Sandbox Code Playgroud)
这为读取:找到的所有项目,其中context为nil或者context是''.
虽然这有效,但它并不是特别"Rails-y".更好的方法是:
Item.where(context: [nil, ''])
Run Code Online (Sandbox Code Playgroud)
这为读取:找到的所有项目,其中context在[nil, ''].
| 归档时间: |
|
| 查看次数: |
4233 次 |
| 最近记录: |