繁体   English   中英

Rails 3-如何添加自动完成另一个条件?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM