0

製品とバリアントという名前の2つのモデルがあり、製品には多くのバリアントがあるため、バリアントモデルは製品と関連付けられています。バリアントモデルには「available_on」という名前のフィールドがあります...チェックインとチェックアウトの日付として2つの日付を使用して検索を実装したいと思います。

各日付、チェックイン日からチェックアウト日までの製品のバリエーションがある場合、結果はそれらすべての製品をマップし、それが結果になります。

。。Sunspot:solrを使用して条件を与える方法を教えてください

おおざっぱに言って私のモデルはこんな感じ

product
{
product_id integer
has_many variants
}

variant
{
variant_id integer
available_on date
belongs_to product
}

チェックインnチェックアウトは検索の入力です。

4

2 に答える 2

0

モデルを問題にすると答えるのは簡単ですが、一般的に、has_manyの関係がある場合は、ネストされたモデルにインデックスを付ける必要があります。

#variant model

searchable do

  integer :product_id
  time :check_in     
  time :check_out     

end

has_many親モデルから何かにインデックスを付ける必要がある場合:multiple=>trueは、この方法でオプションを使用できます

#product model

def variant_ids     
  variants.collect(&:id)
end

searchable do

  integer :variant_ids, :multiple=>true
  ...

end
于 2013-01-28T05:25:04.407 に答える
0

各モデルにインデックスを付け、SOLRから必要なバリアント/製品を返します。ちなみにSpreeを使用している場合は、sunspotとspreeを統合するための宝石があります。私はちょうどそれをフォークしました:https ://github.com/banane/spree_sunspot_search

于 2013-02-03T04:23:03.407 に答える