我根据视图传递的条件调用数据库,因此必须是动态的。
假设我有2个数组:
columns = ['col1', 'col2', 'col3']
vals = ['val1', 'val2', val3']
查询很容易创建,我可以进行连接,比如
query = columns[0] + " = (?) AND" + ...
但参数怎么样?
@finalValues = MyTable.find(:all, :conditions => [query, vals[0], vals[1]... ])
但我不知道会收到多少参数。因此,虽然使用for loop
和连接解决了查询问题,但我可以执行以下操作:
@finalValues = MyTable.find(:all, :conditions => [query, vals])
rails会理解我没有为IN(?)子句传递数组,而是为每个人(?)分割值?
或者我是唯一一个选择完整原始字符串并选择它的选项吗?
答案 0 :(得分:2)
你可以用查询作为第一个元素创建条件数组,并将所有val元素附加到它。
query = columns.map {|col| "#{col} = ?"}.join(" AND ")
@finalValues = MyTable.find(:all, :conditions => [query, *vals])
要注意的是,列和val应该具有相同数量的元素。