1

pg_search_gem と pg_search_scope を使用して検索に複数のパラメータを渡す方法を見つけようとしています

これは私の簡単な検索です

include PgSearch
  pg_search_scope :simple_search, against: [:title, :description], using: { tsearch: { dictionary: "spanish"} } 

def self.search(search)
    if search.present?
        simple_search(search)
    else
        find(:all)
    end
end

しかし今、私はこのようなことをしようとしています

include PgSearch
  pg_search_scope :simple_search, against: [:title, :place, :category], using: { tsearch: { dictionary: "spanish"} } 

def self.searchadv(title, place, category)
  simple_search(:title => title, :place => place, :category => category)
end

私はこれが完全に間違っていることを知っていますが、これは私の質問です.


アップデート

ここに新しいコードがあります

  pg_search_scope :advance_search, lambda {|*args, query|
      return {:against => args,
      :query => query,
      using: { tsearch: { dictionary: "spanish"} } }
  }

def self.searchadv(query, title, place, category)
    advance_search(:all, :title => title, :place => place, :category => category)
end

まだ動作していません。でもほぼ完成!次のエラーが表示されます。

wrong number of arguments (3 for 4)
4

2 に答える 2

1

動的検索範囲を使用できます

include PgSearch
  pg_search_scope :simple_search, lambda do |query, *args| 
    return { :against => args, :query => query }
  end

def self.searchadv(query, title, place, category)
  simple_search(query, :title => title, :place => place, :category => category)
end
于 2013-01-08T20:37:06.440 に答える