Rails:来自Callback方法的HTTP Get请求(在模型中)

时间:2015-08-25 21:50:52

标签: ruby-on-rails json

我想在我的用户模型中创建一个回调。创建用户后,将启动回调以运行get_followers以获取该用户的Twitter关注者(通过完整的联系API)。

这对我来说有点新鲜......

这是将请求放入回调中的正确方法还是应该在某个控制器中?然后我如何在rails中向端点发出请求,我应该在哪里处理返回的数据?

编辑......这样的事情好吗?

User.rb

require 'open-uri'
require 'json'

class Customer < ActiveRecord::Base
  after_create :get_twitter

  private

  def get_twitter
    source = "url-to-parse.com"
    @data = JSON.parse(JSON.load(source))
  end

1 个答案:

答案 0 :(得分:1)

需要考虑的一些事项:

  • 将为每个创建的客户运行回调,而不仅仅是在控制器中创建的客户。根据您的具体需求,这可能是也可能不可取。例如,您需要通过模拟外部API调用来在测试中处理此问题。
  • 如果服务已关闭,或者返回了错误的响应,则回调中可能会出现错误。您必须决定如何处理这些错误。
  • 如果不需要立即运行,您应该考虑让回调中的代码在后台进程而不是Web请求中运行。这样回调中的错误不会产生500页,并且会提高性能,因为可以返回响应而无需等待回调完成。在这种情况下,应用程序的其余部分必须能够处理回调尚未完成的用户。