0

このようなRailsアプリ(Postgres dbを使用)で、特定のカテゴリのユーザー(弁護士)を名前で検索するクエリがあります

 @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 条件を追加するにはどうすればよいですか。

4

1 に答える 1

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])
于 2013-06-08T04:29:58.003 に答える