我试图在该领域,并在查找调用的值都传递:是否有可能对键和值都有可变的查找条件?
@employee = Employee.find(:all,
:conditions => [ '? = ?', params[:key], params[:value].to_i)
输出是
SELECT * FROM `employees` WHERE ('is_manager' = 1)
这不返回任何结果,但是当我在mysqsl直接试试这个使用相同的调用,而不使用is_manager周围的“',它工作正常。如何将我的PARAMS [:键]值的符号,这样产生的SQL调用如下:
SELECT * FROM `employees` WHERE (is_manager = 1)
感谢, d
修复了代码中的语法错误。 – 2010-04-21 19:44:48
从安全角度来看,我仍然认为这是一个坏主意。 – konung 2010-04-21 23:32:01
这是一个通用的解决方案。用户可以拥有有效的密钥哈希值并将其用于验证(而不是columns_hash)。他最初的问题是由于使用绑定变量替换列名,导轨将列名用引号括起来。这不会通过为col name参数传递符号(而不是字符串)来解决。我添加了'columns_hash'验证作为添加检查以将列名限制为已知集的指导行。这应该是安全问题。 – 2010-04-22 00:05:21