0

我根据从视图传递的标准调用数据库,所以它必须是动态的。

假设我有 2 个数组:

columns = ['col1', 'col2', 'col3']
vals = ['val1', 'val2', val3']

查询很容易创建,我可以进行连接,比如

query = columns[0] + " = (?) AND" + ...

但是参数呢?

@finalValues = MyTable.find(:all, :conditions => [query, vals[0], vals[1]... ])

但我不知道我会收到多少参数。因此,当查询问题通过 afor loop和连接解决时,我可以执行以下操作:

@finalValues = MyTable.find(:all, :conditions => [query, vals])

Rails 会明白我不是为 IN (?) 子句传递数组,而是为每个人 (?) 拆分值?

还是我唯一的选择是做一个完整的原始字符串然后就用它?

4

1 回答 1

2

您可以创建以查询为第一个元素的条件数组并将所有 val 元素附加到它。

query = columns.map {|col| "#{col} = ?"}.join(" AND ")
@finalValues = MyTable.find(:all, :conditions => [query, *vals])

需要注意的是,列和 val 应该具有相同数量的元素。

于 2013-06-20T20:00:24.270 回答