循环遍历用户模型中的数组以找到匹配项
Loop through an array in user model to find a match
作为 UI 工程师,我对 Rails 控制台有点陌生,但是,我正在尝试遍历每个用户,如果产品数组包含几个产品 ID。因为产品数组不超过 20 个值,所以产品数组是用户模型的一部分。例如——
用户购买商品801808902
用户可能有一个包含 [800,801,802,808,809...]
的产品数组
我想查找包含 801、808 的所有用户
对于那些匹配集合的用户,为所有这些用户关联一个新产品(免费礼物)
我想通过生产 rails 控制台将其作为快速脚本应用
感谢方向正确的帮助!
我尝试执行以下操作 --
User.where(:product => [801,808])
运气不好
如果您有两个模型作为 User 和 Product 。这样的事情应该可以解决你的问题
product_ids = [801, 808]
User.joins(:products).where(products: {id: product_ids})
如果您的数据库中没有太多对象,并且您希望在控制台中运行一个快速的一次性脚本,您可以这样做:
desired_product_ids = [801, 808]
User.find_each do |user|
unless (user.product_ids & desired_product_ids).empty?
give_gift user
end
end
def give_gift(user)
# your gift logic
user.save
end
这将批量加载内存中的所有活动记录用户对象,因此如果您的数据库很大,这将花费很长时间。
我建议使用 where
查询,如 NEO-xx 建议的那样。您可以将其与 find_each
:
User.where(<your condition here>).find_each do |user|
give_gift user
end
作为 UI 工程师,我对 Rails 控制台有点陌生,但是,我正在尝试遍历每个用户,如果产品数组包含几个产品 ID。因为产品数组不超过 20 个值,所以产品数组是用户模型的一部分。例如——
用户购买商品801808902
用户可能有一个包含 [800,801,802,808,809...]
的产品数组我想查找包含 801、808 的所有用户
对于那些匹配集合的用户,为所有这些用户关联一个新产品(免费礼物)
我想通过生产 rails 控制台将其作为快速脚本应用
感谢方向正确的帮助!
我尝试执行以下操作 --
User.where(:product => [801,808])
运气不好
如果您有两个模型作为 User 和 Product 。这样的事情应该可以解决你的问题
product_ids = [801, 808]
User.joins(:products).where(products: {id: product_ids})
如果您的数据库中没有太多对象,并且您希望在控制台中运行一个快速的一次性脚本,您可以这样做:
desired_product_ids = [801, 808]
User.find_each do |user|
unless (user.product_ids & desired_product_ids).empty?
give_gift user
end
end
def give_gift(user)
# your gift logic
user.save
end
这将批量加载内存中的所有活动记录用户对象,因此如果您的数据库很大,这将花费很长时间。
我建议使用 where
查询,如 NEO-xx 建议的那样。您可以将其与 find_each
:
User.where(<your condition here>).find_each do |user|
give_gift user
end