我正在尝试使用一个下拉列表,该下拉列表将根据前提是否包含特定物种来筛选表格。一些场所有多个物种。如果我试图查找所有包含‘马’的场所,它将只找到在数组中马位于第一位的场所。如果特定元素不是数组中的第一个元素,则不会对其进行筛选和显示。下面是使用的查询。
@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
1条答案
按热度按时间qnakjoqk1#
请在查询中使用SELECT方法而不是Collect方法。