代码之家  ›  专栏  ›  技术社区  ›  Charles Smith

使用designe用户参数更新Rails 5初始化器

  •  0
  • Charles Smith  · 技术社区  · 8 年前

    在这次挑战之前,我以为我离绕着栏杆转越来越近了。我有一个初始值设定项 agilecrm.rb -内容如下所示。我正在使用 AgileCRM Ruby code 尝试将我的应用程序与AgileCRM系统连接。当使用以下代码时,与测试 Create Contact

    config/initializers/agilecrm。rb型

    require 'net/http'
    require 'uri'
    require 'json'
    
    class AgileCRM
      class << self
        def api_key=(key)
          @@api_key = key
        end
    
        def domain=(d)
          @@domain = d
        end
    
        def email=(email)
          @@email = email
        end
    
        def api_key
          @@api_key
        end
    
        def domain
          @@domain
        end
    
        def email
          @@email
        end
    
        def request(method, subject, data = {})
          path = "/dev/api/#{subject}"
          case method
            when :get
              request = Net::HTTP::Get.new(path)
            when :post
              request = Net::HTTP::Post.new(path)
              request.body = data.to_json
            when :put
              request = Net::HTTP::Put.new(path)
              request.body = data.to_json
            when :delete
              request = Net::HTTP::Delete.new(path)
            else
              raise "Unknown method: #{method}"
          end
          uri = URI.parse("https://#{domain}.agilecrm.com")
          http = Net::HTTP.new(uri.host, uri.port)
          http.use_ssl = true
          http.verify_mode = OpenSSL::SSL::VERIFY_NONE
          request['Content-Type'] = 'application/json'
          request['Accept'] = 'application/json'
          request.basic_auth AgileCRM.email, AgileCRM.api_key
          response = http.request(request)
          response.body
        end
      end
    end
    
    AgileCRM.api_key = '*******'
    AgileCRM.domain = '*******'
    AgileCRM.email = '*******'
    
    #  ======================Create Contact====================================
    
    contact_data = '{
        "star_value": "4",
        "lead_score": "92",
        "tags": [
            "Lead",
            "Likely Buyer"
        ],
        "properties": [
            {
                "type": "SYSTEM",
                "name": "first_name",
                "value": "John"
            }
        ]
    }'
    parsed_contact_data = JSON.parse(contact_data)
    print(AgileCRM.request :post, 'contacts', parsed_contact_data)
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   bitsapien    8 年前

    你可能想把这个逻辑转移到你的 User 模型,并具有 after_save agilecrm . 假设Desive用户模型被调用

    class User < ApplicationRecord
      ...
    
      after_save :sync_to_agilecrm
    
      def sync_to_agilecrm
        # your agilecrm api calls go here
        ...
      end
    
    end