查询哈希数组 (Rails 5.2)
Query an array of hashes (Rails 5.2)
data = [
{ name: :name, model: :Address, field_type: :string },
{ name: :country, model: :Address, field_type: :string },
{ name: :street , model: :Address, field_type: :string },
{ name: :city , model: :Address, field_type: :string },
{ name: :count , model: :Property, field_type: :integer },
{ name: :count2 , model: :Property, field_type: :integer } ,
{ name: :count3 , model: :Property, field_type: :integer } ,
{ name: :count3 , model: :Property, field_type: :integer }
]
我有一个散列数组,我想查询散列值。我想知道最有效和最推荐的解决方案。
例如,我可能需要找到所有为 :integer 的哈希名称。或者我可能想查询所有模型的名称:地址。或者我可能需要查询所有 field_types 作为唯一。
我可以直接查询哈希数组吗?如果是,如何,如果不是,是否有更好的方法使用活动模型或其他东西?
您有一个 "plain" 哈希数组。您可以使用 Ruby 方法:
data = [
{ name: :name, model: :Address, field_type: :string },
{ name: :country, model: :Address, field_type: :string },
{ name: :street, model: :Address, field_type: :string },
{ name: :city, model: :Address, field_type: :string },
{ name: :count, model: :Property, field_type: :integer },
{ name: :count2, model: :Property, field_type: :integer },
{ name: :count3, model: :Property, field_type: :integer },
{ name: :count3, model: :Property, field_type: :integer }
]
p data.select { |val| val[:field_type] == :integer }.map { |val| val[:name] }
# [:count, :count2, :count3, :count3]
p data.select { |val| val[:model] == :Address }.map { |val| val[:name] }
# [:name, :country, :street, :city]
p data.uniq { |val| val[:field_type] }
# [{:name=>:name, :model=>:Address, :field_type=>:string}, {:name=>:count, :model=>:Property, :field_type=>:integer}]
data = [
{ name: :name, model: :Address, field_type: :string },
{ name: :country, model: :Address, field_type: :string },
{ name: :street , model: :Address, field_type: :string },
{ name: :city , model: :Address, field_type: :string },
{ name: :count , model: :Property, field_type: :integer },
{ name: :count2 , model: :Property, field_type: :integer } ,
{ name: :count3 , model: :Property, field_type: :integer } ,
{ name: :count3 , model: :Property, field_type: :integer }
]
我有一个散列数组,我想查询散列值。我想知道最有效和最推荐的解决方案。
例如,我可能需要找到所有为 :integer 的哈希名称。或者我可能想查询所有模型的名称:地址。或者我可能需要查询所有 field_types 作为唯一。
我可以直接查询哈希数组吗?如果是,如何,如果不是,是否有更好的方法使用活动模型或其他东西?
您有一个 "plain" 哈希数组。您可以使用 Ruby 方法:
data = [
{ name: :name, model: :Address, field_type: :string },
{ name: :country, model: :Address, field_type: :string },
{ name: :street, model: :Address, field_type: :string },
{ name: :city, model: :Address, field_type: :string },
{ name: :count, model: :Property, field_type: :integer },
{ name: :count2, model: :Property, field_type: :integer },
{ name: :count3, model: :Property, field_type: :integer },
{ name: :count3, model: :Property, field_type: :integer }
]
p data.select { |val| val[:field_type] == :integer }.map { |val| val[:name] }
# [:count, :count2, :count3, :count3]
p data.select { |val| val[:model] == :Address }.map { |val| val[:name] }
# [:name, :country, :street, :city]
p data.uniq { |val| val[:field_type] }
# [{:name=>:name, :model=>:Address, :field_type=>:string}, {:name=>:count, :model=>:Property, :field_type=>:integer}]