我希望做到以下几点:
var = 'bank_id'
id = '100'
Bank.where(var: id) or
Bank.where("? = ?", var, id)
银行是一个典范。 bank_id是模型的属性 它把它当作一个字符串。
答案 0 :(得分:7)
接受散列函数的位置是否映射到正确的SQL WHERE。
Bank.where(var: id)
实际上是
Bank.where({:var => id})
因此,您可以构建自己的哈希键:
Bank.where({ var.to_s => id })
或更短:
Bank.where(var => id)
只是为了澄清: 差异实际上在于哈希的不同语法。基本上有两个版本。
Always coding有更详细的解释。
答案 1 :(得分:1)
这是可能的:
var = 'bank_id'
id = '100'
Bank.where("#{var} = ?", id)
但是你用它做什么?也许这里有一个更好的方法来解决“真正的”问题。
答案 2 :(得分:1)
还有一个 Arel Table 方法:
Bank.where(Bank.arel_table[var].eq(id))