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 回答