使用 Rails 6。
我的脏代码
active_card_ids = JSON.parse(cookies[:card_ids])
@active_cards = []
@best_cards = Houses.where("#{payment_category} IS NOT NULL").order("#{payment_category} DESC")
@best_cards.each do |card|
if active_card_ids.include? card.id
@active_cards << card
end
end
我想做什么
我有一组查询记录: queried_records = [<object id: 1>, <object id: 3>, <object id: 4>, <object id: 7>]
另一个 ID 数组: wanted_ids = [4, 5]
创建另一个数组: selected_records = []
我想将queried_records
在wanted_ids
, 中找到的移动到selected_records
。
在这个例子中,我们找到了<object id: 4>
from queried_records
,所以我们想将它移动(而不是复制)到selected_records
。
结果应该是selected_records
返回一个数组[<object id: 4>]
如果我正确理解了您的问题,那么将会有 idactive_card_ids
并且您想要另一个仅包含这些 id 的数组。
您可以尝试直接查询数据库,然后您不必运行循环。
下面的示例采用一组 id 并将其传递给 where IN 子句以仅查询活动卡片。
active_card_ids = JSON.parse(cookies[:card_ids])
@active_cards = Houses.where(id: active_card_ids).where("#{payment_category} IS NOT NULL").order("#{payment_category} DESC")
@best_cards = Houses.where("#{payment_category} IS NOT NULL").order("#{payment_category} DESC")
您可以尝试的另一种方法是:
active_card_ids = JSON.parse(cookies[:card_ids])
@best_cards = Houses.where("#{payment_category} IS NOT NULL").order("#{payment_category} DESC")
@active_cards = @best_cards.select{ |card| active_card_ids.include? card.id }
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句