Ruby在第一个数组元素处停止搜索

tp5buhyn  于 2022-09-21  发布在  Ruby
关注(0)|答案(1)|浏览(153)

我正在尝试使用一个下拉列表,该下拉列表将根据前提是否包含特定物种来筛选表格。一些场所有多个物种。如果我试图查找所有包含‘马’的场所,它将只找到在数组中马位于第一位的场所。如果特定元素不是数组中的第一个元素,则不会对其进行筛选和显示。下面是使用的查询。

@species = params[:species].presence
@default_species = @species.blank? ? 'All Species' : Species.find_cached_by_short_name(@species)&.long_name || @species

@prems = StatevetPrem.unmatched.search(@search, @page, @lines_per_page, { order: @sort })
@prems = @prems.where(state: @state) if @state

if @species
  prem_ids = StatevetDoc.
               unmatched.
               select(:holdings_match).
               where(default_species: @species).
               limit(@lines_per_page).
               collect { |doc| doc.holdings_match.values }.
               flatten.
               uniq[0,999]
  @prems = @prems.where(id: prem_ids)
end
qnakjoqk

qnakjoqk1#

请在查询中使用SELECT方法而不是Collect方法。

相关问题