如何将条件保存在变量中并在轨道活动记录中使用该变量



我正在尝试将条件保存在变量中并在活动记录查询中调用它,如下所示

if !key1.nil?
  @condition = ":key2 => @value2, :key3 => @value3"
else
  @condition = ":key4 => @value4, :key5 => @value5"
end
@result = Model.where(@condition).all

该怎么做?请帮助我。

更新:

  @condition = { "key1 = ? and key2 >= ? and key3 <= ? and id IN (?)", @value1, @value2, @value3, @id }

使用 hash 而不是 string

 @condition =  { :key2 => @value2, :key3 => @value3 }

此外,您可以使用unless来简化if !key1.nil?的语法:

@condition = {}
unless key1
  @condition =  { :key2 => @value2, :key3 => @value3 }
else
  @condition =  { :key4 => @value4, :key5 => @value5 }
end

最新更新