私はこのようなことをしようとしました
not_allowed = ['5', '6', '7']
sql = not_allowed.map{|n| "col != '#{n}'"}.join(" OR ")
Model.where(sql)
と
not_allowed = ['5', '6', '7']
sql = not_allowed.map{|n| "col <> '#{n}'"}.join(" OR ")
Model.where(sql)
しかし、これらはどちらもテーブル全体を返すだけで、正確ではありません。
だから私はこれをやった、それは動作します:
shame = values.map{|v| "where.not(:col => '#{v}')" }.join(".")
eval("Model.#{shame}")
私は実際のWebアプリケーションに対してこれを行っているわけではなく、モデル用にレールを使用しているだけです。したがって、実際のセキュリティ上の懸念はありません。しかし、これはひどい修正であり、この質問を投稿する義務があると感じました