2

ほとんどの場合、これは RailsCasts スクリーンキャスト #341 に基づいています。

PostgreSQL の全文検索を使用しようとしていますが、機能しますが、スコープを設定する必要があります。検索は、object.state=='saved'.

スクリーンキャストでは検索のメソッドがクラスメソッドのように定義されているため、「where」は配列を返すため「where」を使用できず、検索メソッドはクラスメソッドであるため、ここでエラーになります。このように変更しようとしました:

def test_search(query)
 if query.present?
  self.where("title @@ :q or text_for_test @@ :q", q:query)
 else
  scoped
 end
 end

に:

@tests=Test.where(:state=>'saved')
@tests.test_search(params[:query])

しかし、Rails は undefined method エラーをスローします。

検索範囲を設定するために他に何ができますか? または、この試行のエラーを修正するにはどうすればよいですか?

4

2 に答える 2

2

postgres の全文検索を提供するtextacular gem を使用します。

名前付きスコープを使用する方法と同様に、textacular によって提供される「basic_search」関数を使用できます。

Test.basic_search('Sonic').where(:status => 'saved')

Test.where(:status => 'saved').basic_search('Sonic')
于 2013-04-25T10:59:23.307 に答える