Rails 只从另一个数组中获取数组元素
Rails get only array elements from another array
我得到了以下查询的结果:
query
class SyncResult
def self.query(products)
Imports::Product
.order(:last_sync_at)
.pluck(:id, :name, :code, :sync_result, :last_sync_at)
.map do |id, name, code, result, last_sync_at|
{
id: id,
name: name,
code: code,
result: result,
last_sync_at: last_sync_at
}
end
end
end
query result
=> [{:id=>"611ea9a7392ab50013cf4713", :name=>"2-Tone Hoodie", :code=>"SS22CH013", :result=>nil, :last_sync_at=>nil},
{:id=>"60ec84062f25d400150b351c", :name=>"5-Pocket Denim", :code=>"SS22WP014", :result=>nil, :last_sync_at=>nil},
{:id=>"61966dc83e81dd001731ccd7", :name=>"Zip Shirt Jacket", :code=>"FW22WT001", :result=>nil, :last_sync_at=>nil},
{:id=>"61d5cab6b41408001b0e9376", :name=>"Yankees Satin Varsity Jacket", :code=>"FW22WJ021", :result=>nil, :last_sync_at=>nil}]
products = ['SS22CH013', 'FW22WJ021']
现在我只想获取这些包含来自 products
数组的代码的数组哈希元素。
最终结果应该是:
=> [{:id=>"611ea9a7392ab50013cf4713", :name=>"2-Tone Hoodie", :code=>"SS22CH013", :result=>nil, :last_sync_at=>nil},
{:id=>"61d5cab6b41408001b0e9376", :name=>"Yankees Satin Varsity Jacket", :code=>"FW22WJ021", :result=>nil, :last_sync_at=>nil}]
您可以通过以下方式达到预期的效果。
- 正在更新查询以获取给定代码的产品
products = ['SS22CH013', 'FW22WJ021']
Imports::Product
.where(code: products)
.order(:last_sync_at)
.pluck(:id, :name, :code, :sync_result, :last_sync_at)
.map do |id, name, code, result, last_sync_at|
{
id: id,
name: name,
code: code,
result: result,
last_sync_at: last_sync_at
}
- 正在更新查询以获取给定代码的产品(无需 pluck)
products = ['SS22CH013', 'FW22WJ021']
Imports::Product
.where(code: products)
.order(:last_sync_at)
.select(:id, :name, :code, :sync_result, :last_sync_at)
.map(&:attributes)
- 对查询结果使用
select
query_result = [{:id=>"611ea9a7392ab50013cf4713", :name=>"2-Tone Hoodie", :code=>"SS22CH013", :result=>nil, :last_sync_at=>nil},
{:id=>"60ec84062f25d400150b351c", :name=>"5-Pocket Denim", :code=>"SS22WP014", :result=>nil, :last_sync_at=>nil},
{:id=>"61966dc83e81dd001731ccd7", :name=>"Zip Shirt Jacket", :code=>"FW22WT001", :result=>nil, :last_sync_at=>nil},
{:id=>"61d5cab6b41408001b0e9376", :name=>"Yankees Satin Varsity Jacket", :code=>"FW22WJ021", :result=>nil, :last_sync_at=>nil}]
products = ['SS22CH013', 'FW22WJ021']
query_result.select{ |product| products.include?(product[:code]) }
我得到了以下查询的结果:
query
class SyncResult
def self.query(products)
Imports::Product
.order(:last_sync_at)
.pluck(:id, :name, :code, :sync_result, :last_sync_at)
.map do |id, name, code, result, last_sync_at|
{
id: id,
name: name,
code: code,
result: result,
last_sync_at: last_sync_at
}
end
end
end
query result
=> [{:id=>"611ea9a7392ab50013cf4713", :name=>"2-Tone Hoodie", :code=>"SS22CH013", :result=>nil, :last_sync_at=>nil},
{:id=>"60ec84062f25d400150b351c", :name=>"5-Pocket Denim", :code=>"SS22WP014", :result=>nil, :last_sync_at=>nil},
{:id=>"61966dc83e81dd001731ccd7", :name=>"Zip Shirt Jacket", :code=>"FW22WT001", :result=>nil, :last_sync_at=>nil},
{:id=>"61d5cab6b41408001b0e9376", :name=>"Yankees Satin Varsity Jacket", :code=>"FW22WJ021", :result=>nil, :last_sync_at=>nil}]
products = ['SS22CH013', 'FW22WJ021']
现在我只想获取这些包含来自 products
数组的代码的数组哈希元素。
最终结果应该是:
=> [{:id=>"611ea9a7392ab50013cf4713", :name=>"2-Tone Hoodie", :code=>"SS22CH013", :result=>nil, :last_sync_at=>nil},
{:id=>"61d5cab6b41408001b0e9376", :name=>"Yankees Satin Varsity Jacket", :code=>"FW22WJ021", :result=>nil, :last_sync_at=>nil}]
您可以通过以下方式达到预期的效果。
- 正在更新查询以获取给定代码的产品
products = ['SS22CH013', 'FW22WJ021'] Imports::Product .where(code: products) .order(:last_sync_at) .pluck(:id, :name, :code, :sync_result, :last_sync_at) .map do |id, name, code, result, last_sync_at| { id: id, name: name, code: code, result: result, last_sync_at: last_sync_at }
- 正在更新查询以获取给定代码的产品(无需 pluck)
products = ['SS22CH013', 'FW22WJ021'] Imports::Product .where(code: products) .order(:last_sync_at) .select(:id, :name, :code, :sync_result, :last_sync_at) .map(&:attributes)
- 对查询结果使用
select
query_result = [{:id=>"611ea9a7392ab50013cf4713", :name=>"2-Tone Hoodie", :code=>"SS22CH013", :result=>nil, :last_sync_at=>nil}, {:id=>"60ec84062f25d400150b351c", :name=>"5-Pocket Denim", :code=>"SS22WP014", :result=>nil, :last_sync_at=>nil}, {:id=>"61966dc83e81dd001731ccd7", :name=>"Zip Shirt Jacket", :code=>"FW22WT001", :result=>nil, :last_sync_at=>nil}, {:id=>"61d5cab6b41408001b0e9376", :name=>"Yankees Satin Varsity Jacket", :code=>"FW22WJ021", :result=>nil, :last_sync_at=>nil}] products = ['SS22CH013', 'FW22WJ021'] query_result.select{ |product| products.include?(product[:code]) }