Запрос массива хэшей (Rails 5.2) - PullRequest
2 голосов
/ 08 марта 2019
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 }
      ]

У меня есть массив хэшей, и я хотел бы запросить значения хэшей. Я хотел бы знать наиболее эффективное и наиболее рекомендуемое решение.

Например, мне может понадобиться найти все имена хэшей, которые являются: целыми числами. ИЛИ Я могу запросить все имена моделей, которые: Адрес. ИЛИ Мне может потребоваться запросить все field_types как уникальные.

Могу ли я запросить массив хэшей напрямую? если да, то как, а если нет, то есть ли лучший метод, использующий активную модель или что-то еще?

1 Ответ

3 голосов
/ 08 марта 2019

У вас есть "простой" массив хэшей. Вы можете использовать методы 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}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...