如何将条件中的哈希键移动到类方法中

时间:2013-06-07 22:09:58

标签: ruby-on-rails

我有一个查询,在我的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条件。

1 个答案:

答案 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])