0

多くの業界とレベルを持つ会社モデルがあります。

レベルに基づいて産業の数を取得するヘルパー関数があります。

「基本」レベルの会社モデル インスタンスは、最初の 2 つの業界でのみ検索可能である必要がありますが、それ以上のものが含まれている可能性がありますが、最初の 2 つの業界の結果にのみ表示されるようにしたいとします。

私が持っているモデルでは

searchable do
  integer :industry_ids, multiple: true

num_of_industries ヘルパー関数によって決定されるレベルに基づいて、特定の数の業界のみを検索できるように、モデル インスタンスの検索を制限するにはどうすればよいですか。

何かのようなもの

searchable do
  integer :industry_ids[num_of_industries], multiple: true

編集:私はそれを理解しました

LIMITED_INDUSTRIES_BASED_ON_LEVEL = {
  'Free' => 1,
  'Silver' => 3,
  'Gold' => 5,
  'Platinum' => 5
}
def industries_limited
  self.industries.limit(LIMITED_INDUSTRIES_BASED_ON_LEVEL[self.level])
end
searchable do
  integer :industry_ids, multiple: true do
    self.industries_limited.map(&:id)
  end
end
4

1 に答える 1

0

会社のレベルは「無料」であり、したがって 1 つの業界に限定されますが、さらに追加することができるため、将来アップグレードすることを決定した場合、すべての情報がそこにあります。したがって、基本的にレベルに基づいて業界のみをカウントするように検索自体を制限していました (この場合、レベル = "無料" の場合、制限は 1 であるため、最初の 1 のみをカウントします)。

LIMITED_INDUSTRIES_BASED_ON_LEVEL = {
  'Free' => 1,
  'Silver' => 3,
  'Gold' => 5,
  'Platinum' => 5
}
def industries_limited
  self.industries.limit(LIMITED_INDUSTRIES_BASED_ON_LEVEL[self.level])
end
searchable do
  integer :industry_ids, multiple: true do
    self.industries_limited.map(&:id)
  end
end
于 2012-11-15T18:34:00.223 に答える