我从我的模型中找到了这个状态,目前看起来像这样。
@major_set = Interest.find(:all, :conditions => {:id => 1..21})
我想添加一些我刚刚添加的个人ID,如120 ... 130。我试着做...
@major_set = Interest.find(:all, :conditions => {:id => 1..21, 120..130})
但得到了错误。 “语法错误,意外'}',期待tASSOC ... ns => {:id => 1..21,122..130})”
如何选择多组id以及一些单独的id,即(:conditions => {:id => 1..21,121..140,144,155} ??
答案 0 :(得分:2)
如果在irb中键入{:id => 1..21, 122..130}
,则会出现错误,因为它不是有效的ruby语法。这被解释为哈希,其中第一个元素是:id => 1..21
,第二个元素缺少它的键。
为了使其成为有效的ruby表达式,您需要输入:
{:id=>[1..21, 122..130]}
但我不认为ActiveRecord会接受这种语法。所以你可能需要:
:conditions => "id BETWEEN 1 AND 21 OR id BETWEEN 122 AND 130"
这适用于MySQL。我不知道它是否适用于其他数据库。
答案 1 :(得分:2)
您可以将范围转换为数组并将它们一起添加。 E.g。
@major_set = Interest.find(:all,
:conditions => {:id => (1..21).to_a + (120..130).to_a})
如果您想添加单个ID,则可以将它们添加到数组中。 E.g。
ids_to_find = (1..21).to_a + (120..140).to_a
ids_to_find << 144
ids_to_find << 145
@major_set = Interest.find(:all, :conditions => { :id => ids_to_find })