这样可以正常工作,并返回正确的结果:
query = params[:query].downcase
users = User.find(:all, :conditions => ['username LIKE ?', "%#{query}%"])
但是,我认为这是不安全的,因为它对SQL注入攻击持开放态度?
所以我试图这样做:
users = User.all(:conditions => ["username LIKE ?", query])
甚至
users = User.where("username LIKE ?", query)
但这两个都没有返回任何结果。
这样做的正确方法是什么?
修改 这有效:
users = User.where("username LIKE ?", "%#{query}%")
但根据Rails文档:
答案 0 :(得分:4)
您在查询的替代尝试中缺少百分比符号:
query = "%thing_to_find%"
users = User.all(:conditions => ["username LIKE ?", query])
-OR -
query = "%thing_to_find%"
users = User.where("username LIKE ?", query)
但话虽如此,你的第一个例子是安全的SQL注入。事实上,你的所有三个例子都是AOK!