代码之家  ›  专栏  ›  技术社区  ›  Rubioli

RubyonRails-如何组合来自两个独立API的输出数据并将它们添加到数据库中

  •  0
  • Rubioli  · 技术社区  · 6 年前

    原料药 并将它们添加到我的数据库中,以便更好地进行分析。

    两者 原料药 (例如,当我请求 images

    所以两者都是 原料药 会有同样数量的 但是 不同的字段和字段名。

    在我的应用程序中,我只对从这两个字段中获取5个字段的数据感兴趣 field_1 , field_3 & field_5 当我得到 field_2 & field_4 .

    只有 第一个API (我仍然被困在如何把这两个 (一起)

    ## My Image Model
    class Image < ActiveRecord::Base
    
      private
    
        def self.add_image_data_to_database(object, field_1, field_2, field_3, field_4, field_5)
          object.create(
              field_1: field_1,
              field_2: field_2,
              field_3: field_3,
              field_4: field_4,
              field_5: field_5,
          )
        end
    end
    
    ## My Images Controller
    class ImagesController < ApplicationController
    
      first_site_api = "api.website-1.com"
      first_api_results = HTTParty.get(first_site_api)
      first_api_json = JSON.parse(first_api_results)
    
    
      second_site_api = "api.website-2.com"
      second_api_results = HTTParty.get(second_site_api)
      second_api_json = JSON.parse(second_api_results)
    
      first_api_json.each do |data|
        Image.add_image_data_to_database(
            data['field_1'], 
            data['field_3'],
            data['field_5']
            )
      end
    
    end
    

    基本上我需要并且想知道怎么做,就是从第一个API和第二个API得到一些字段值,然后把它们放在一起,这样我就可以把它们全部添加到一个图像中。

    1 回复  |  直到 6 年前
        1
  •  0
  •   lacostenycoder    6 年前

    你可以从散列中取出物品 .keep_if

    # My Image Model
    class Image < ActiveRecord::Base
    
      private
    
        def self.add_image_data_to_database(object, hash)
          object.create(hash)
        end
    end
    
    ## My Images Controller
    class ImagesController < ApplicationController
    
      first_site_api = "api.website-1.com"
      first_api_results = HTTParty.get(first_site_api)
    
      hash = JSON.parse(first_api_results)
               .keep_if{|k, _v| [ 'field_1', 'field_3', 'field_5'].include?(k)}
    
    
      second_site_api = "api.website-2.com"
      second_api_results = HTTParty.get(second_site_api)
    
      hash.merge( JSON.parse(second_api_results)
        .keep_if{|k, _v| ['field_2', 'field_4'].include?(k) }
      )
    
      Image.add_image_data_to_database(hash)
    end