加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails ActiveRecord – 在多个属性上搜索

发布时间:2020-12-17 04:36:25 所属栏目:百科 来源:网络整理
导读:我正在实现一个简单的搜索功能,它应检查username,last_name和first_name中的字符串.我在旧的RailsCast上看过这个ActiveRecord方法: http://railscasts.com/episodes/37-simple-search-form find(:all,:conditions = ['name LIKE ?',"%#{search}%"]) 但是我
我正在实现一个简单的搜索功能,它应检查username,last_name和first_name中的字符串.我在旧的RailsCast上看过这个ActiveRecord方法:

http://railscasts.com/episodes/37-simple-search-form

find(:all,:conditions => ['name LIKE ?',"%#{search}%"])

但是我如何设置它以便在name,last_name和first name中搜索关键字并返回记录,如果其中一个字段与该术语匹配?

我也想知道RailsCast上的代码是否容易出现SQL注入?

非常感谢!

解决方法

我假设您的模型名称是Model – 只需在执行实际查询时将其替换为您的真实模型名称:
Model.where("name LIKE ? OR last_name LIKE ? OR first_name LIKE ?","%#{search}%","%#{search}%")

关于SQL注入的担忧 – 两个代码片段都不受SQL注入的影响.只要你没有直接将字符串嵌入到WHERE子句中就可以了.易于注入的代码的示例是:

Model.where("name LIKE '#{params[:name]}'")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读