ruby-on-rails – Rails gem rails3-jquery-autocomplete:如何
发布时间:2020-12-16 20:08:01 所属栏目:百科 来源:网络整理
导读:我正在使用rails3- jquery-autocomplete gem在这里找到: http://github.com/crowdint/rails3-jquery-autocomplete 对于如何查询模型的单个属性的说明很清楚,并且我可以使该工作没有问题. 然而,我的人物模型有两个属性要组合和查询.它们是first_name和last_n
我正在使用rails3-
jquery-autocomplete gem在这里找到:
http://github.com/crowdint/rails3-jquery-autocomplete
对于如何查询模型的单个属性的说明很清楚,并且我可以使该工作没有问题. 然而,我的人物模型有两个属性要组合和查询.它们是first_name和last_name.我想将它们组合成一个名为full_name的伪属性.目前,我收到此错误: ActiveRecord::StatementInvalid (SQLite3::SQLException: no such column: full_name: SELECT "people".* FROM "people" WHERE (LOWER(full_name) LIKE 'cla%') ORDER BY full_name ASC LIMIT 10): Person模型没有full_name属性,尽管我在Person模型文件中有以下方法: def full_name "#{self.first_name} #{self.last_name}" end 如何修改Person模型文件,以便对full_name的调用查询数据库以匹配first_name和last_name的组合? 解决方法
您的伪属性仅对已经检索到的记录有效,但与搜索记录无关.最简单的解决方案可能是一个名为
named scope的解决方案:
scope :search_by_name,lambda { |q| (q ? where(["first_name LIKE ? or last_name LIKE ? or concat(first_name,' ',last_name) like ?",'%'+ q + '%','%'+ q + '%' ]) : {}) } 因此,呼叫如: Person.search_by_name(params[:q]) 将返回一个适当的结果集.如果没有param被传递,它也将返回所有的条目(或者更具体地说,这个范围将不添加任何额外的),使其成为index操作的简单插件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |