如果匹配 id,则从记录数组中移动记录

胜利者

使用 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_recordswanted_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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果记录与抓取的数据不匹配,则从数据库中删除记录

如果多个类型匹配,则选择查询记录

过滤特定的列,如果匹配则获取记录

如果记录不匹配,请禁用按钮

如果2列不匹配,mysql查找不匹配的记录

如果语句匹配数组

如果键值匹配,则从数组中删除对象

如果文本与数组匹配,则获取 id

如果没有找到匹配的记录,通知用户 - Coldfusion

SQL查询where子句如果没有匹配记录则忽略

如果表B在搜索中匹配,则获取表A记录

Python 链接记录,如果在列中匹配

如果类匹配,jQuery移动块元素

如果记录具有与数组中任何ID相同的ID,则选择记录

如果其他表指向记录,则从表中选择

如果属性匹配,则返回数组中的对象

如果条件匹配,MongoDB 更新数组

MongoDB聚合-如果数组中的值匹配

设置数组值(如果存在匹配项)

如果_id匹配,猫鼬聚合

如果 Id 匹配,则反应如何替换名称

C#Linq查找与条件匹配的记录,如果找到该记录,则返回所有相关记录

PTR记录和A记录应匹配。如果没有A记录怎么办?

如果对象与新数组不匹配,则从前一个数组中删除对象

如果项目与字符串数组匹配,则从Ruby哈希数组中删除项目

如果数组值位于句子的最后位置,则从数组值中删除匹配的字符

如果两列匹配,则从数据库显示

如果私有变量匹配,则从向量中删除对象

如果匹配多个模式,则从列表中滤除元素