Ruby ActiveRecord和sql元组支持

Kel*_*vin 7 ruby sql rails-activerecord

ActiveRecord是否支持where子句中的元组,假设底层数据库有效?

结果where子句看起来像:

where (name, address) in (('John', '123 Main St'))
Run Code Online (Sandbox Code Playgroud)

我试过了:

Person.where({[:name, :address] => ['John', '123 Main St']})
Run Code Online (Sandbox Code Playgroud)

它不起作用.

Kam*_*ran 5

tupleArray = [['John', '123 Main St'],['Jane', '124 Main St']]
Person.where("(name, address) IN (#{(['(?)']*tupleArray.size).join(', ')})", *tupleArray)
Run Code Online (Sandbox Code Playgroud)

  • 这是一种 hack,不符合 ActiveRecord“支持”的条件。另外,[此处]已经提到了该黑客攻击(https://groups.google.com/d/msg/rubyonrails-core/RnKkEwbcNCk/3AJz9UOy_d4J) (3认同)

小智 2

Person.where("(name, address) IN ((?))", ['John', '123 Main St'])
Run Code Online (Sandbox Code Playgroud)