我有一个查询,在我的Rails应用程序(使用Postgres数据库)中按名称搜索某类用户(律师)
@users = User.where(:lawyer => 'true').text_search(params[:query])
这是User.rb类
上的方法def self.text_search(query)
if query.present?
where("name @@ :q", q: query)
else
scoped
end
end
而不是在控制器中使用where.(:lawyer => 'true')
,我想(尽管它不影响查询)将该条件放在User.rb类的方法中,就像这样
@users = User.text_search(params[:query])
def self.text_search(query)
if query.present?
where("name @@ :q", q: query, :lawyer => 'true')
else
scoped
end
end
但是,现在搜索不起作用(或者它只是通过名称查询进行搜索)
我如何在text_search方法中添加该律师== true条件。
答案 0 :(得分:2)
我会使用范围:
class User < ActiveRecord::Base
scope :lawyers, :conditions => { :is_lawyer => true }
end
然后在控制器中:
@users = User.lawyers.text_search(params[:query])
你可以全力以赴,在用户模型上定义一个类方法:
def self.lawyers_named(name)
lawyers.text_search(name)
end
然后用:
调用它@users = User.lawyers_named(params[:query])