我有一个名为的变量letters
,在这种情况下等于以下内容:
["a", "e"]
基本上,如何在我Item
的模型上执行活动记录查询以查找所有以 A、B、C、D 和 E 开头的项目?
我有一个名为的变量letters
,在这种情况下等于以下内容:
["a", "e"]
基本上,如何在我Item
的模型上执行活动记录查询以查找所有以 A、B、C、D 和 E 开头的项目?
按照这个链接: http: //programming-tut.blogspot.ca/2009/10/ruby-on-rails-loop-alphabet-to-z.html
你可以这样做:
range = [ 'A', 'E' ]
conditions = (range.first..range.last).to_a.map{ |letter| " name ILIKE '#{letter}%' " }.join('OR')
Item.where(conditions)
或者像 Vimsha 指出的那样:
letters = ('A'..'E').to_a
Item.where("substr(name, 1, 1) IN (?)", letters)
Item.where("substr(name, 1, 1) in ('A', 'B', 'C', 'D', 'E')")