
[英]How to add condition on rails4-autocomplete gem, something like ( where user_id is user.id)
[英]Rails 3 - how to add to autocomplete another condition?
我将gem rails3-jquery-autocomplete用于数据库中项目的自动完成搜索。 自动完成工作正常,但我需要向生成的查询添加另一个条件。
如果我开始写一个搜索字符串,则会在查询后生成:
SELECT persons.id, persons.name FROM "persons" WHERE (LOWER(persons.name) ILIKE 'jo%') ORDER BY persons.name ASC LIMIT 10
这将返回所有行,其中名称以jo
开头。
但是,我如何搜索所有以jo
开头并同时开头的人,例如,列active_person
= 1
? 是否有用于此目的的助手?
谢谢
如果我正确理解了上下文,则active_person是一个布尔值,指示用户是否处于活动状态。
如果大多数时间都希望这种行为-搜索仅活跃的用户/人,则可以在Person模型中包括default_scope,如下所示:
class Person < ActiveRecord::Base
default_scope where(:active_person => 1)
end
这样,任何曾经生成的查询都将同时检查active_person = 1
有关默认范围的更多信息,请访问: http : //apidock.com/rails/ActiveRecord/Base/default_scope/class
我知道@Andrei的答案是正确的,但这不是我想要的。 我猜@ user984621也一样。 我正在寻找的是我想向查询添加一个额外条件。 通过阅读此https://github.com/crowdint/rails3-jquery-autocomplete/blob/master/lib/rails3-jquery-autocomplete/orm/active_record.rb
我发现Rails自动完成功能支持其他条件,您只需要将另一个参数传递给默认用法即可,如下所示
autocomplete :user, :name, :where => { :role => 'employee'}
代替这个
autocomplete :user, :name
将WHERE (LOWER(persons.name) ILIKE 'jo%')
更改为WHERE (LOWER(persons.name) ILIKE 'jo%') AND active_person = 1
您可以通过这种方式将负载与AND
OR
链接在一起。
请注意,这确实是有关SQL的问题:您的标题和标签有点误导。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.