Ruby on rails Rails 4-在更新另一个模型期间创建关联模型

Ruby on rails Rails 4-在更新另一个模型期间创建关联模型,ruby-on-rails,ruby,api,ruby-on-rails-4,Ruby On Rails,Ruby,Api,Ruby On Rails 4,我正在使用Wicked gem分步骤(步骤1、步骤2等)构建模型实例。然而,在第三步中,我需要进行一个API调用来收集一些数据并将其存储在另一个模型实例中(它将与另一个模型有一个:bellings_to关系)。我想知道的是,在我还在创建第一个模型的过程中,如何与这个API交互并存储信息。这是一个好的设计模式吗?或者我应该以不同的方式处理API信息 我的想法是,我可以重定向到进行API调用的表单,并在处理API后重定向回第四步 Rails是否有用于处理第三方API的特定设计?不,这不是一种好的设计

我正在使用Wicked gem分步骤(步骤1、步骤2等)构建模型实例。然而,在第三步中,我需要进行一个API调用来收集一些数据并将其存储在另一个模型实例中(它将与另一个模型有一个:bellings_to关系)。我想知道的是,在我还在创建第一个模型的过程中,如何与这个API交互并存储信息。这是一个好的设计模式吗?或者我应该以不同的方式处理API信息

我的想法是,我可以重定向到进行API调用的表单,并在处理API后重定向回第四步


Rails是否有用于处理第三方API的特定设计?

不,这不是一种好的设计模式,但有时无法解决。重要的是

  • 所有内容都包含在单个数据库事务中,正如我从您的问题中了解到的,情况就是这样。您的对象通过“属于”关系连接,因此可以一次性保存它们(保存“父”对象时,将立即保存“子”对象)。也不涉及第二个未连接的对象,因此不需要仅为此操作创建单独的事务

  • 第二,你要用足够的错误处理覆盖一切。这是您自己的责任:确保当第三方呼叫失控时,您已准备好捕捉错误,更糟糕的是,您自己回滚整个事务


  • 因此,总结一下:不,这不是一个好的实践,但Rails为您提供了“保持干净”的工具。不,这不是一个好的设计模式,但有时无法解决。重要的是

  • 所有内容都包含在单个数据库事务中,正如我从您的问题中了解到的,情况就是这样。您的对象通过“属于”关系连接,因此可以一次性保存它们(保存“父”对象时,将立即保存“子”对象)。也不涉及第二个未连接的对象,因此不需要仅为此操作创建单独的事务

  • 第二,你要用足够的错误处理覆盖一切。这是您自己的责任:确保当第三方呼叫失控时,您已准备好捕捉错误,更糟糕的是,您自己回滚整个事务


  • 因此,总结一下:不,这不是一个好的实践,但Rails为您提供了“保持干净”的工具。不,这不是一个好的设计模式,但有时无法解决。重要的是

  • 所有内容都包含在单个数据库事务中,正如我从您的问题中了解到的,情况就是这样。您的对象通过“属于”关系连接,因此可以一次性保存它们(保存“父”对象时,将立即保存“子”对象)。也不涉及第二个未连接的对象,因此不需要仅为此操作创建单独的事务

  • 第二,你要用足够的错误处理覆盖一切。这是您自己的责任:确保当第三方呼叫失控时,您已准备好捕捉错误,更糟糕的是,您自己回滚整个事务


  • 因此,总结一下:不,这不是一个好的实践,但Rails为您提供了“保持干净”的工具。不,这不是一个好的设计模式,但有时无法解决。重要的是

  • 所有内容都包含在单个数据库事务中,正如我从您的问题中了解到的,情况就是这样。您的对象通过“属于”关系连接,因此可以一次性保存它们(保存“父”对象时,将立即保存“子”对象)。也不涉及第二个未连接的对象,因此不需要仅为此操作创建单独的事务

  • 第二,你要用足够的错误处理覆盖一切。这是您自己的责任:确保当第三方呼叫失控时,您已准备好捕捉错误,更糟糕的是,您自己回滚整个事务


  • 因此,总结一下:不,这不是一个好的实践,但Rails为您提供了“保持干净”的工具。

    尽管您的问题相当详细,但我建议您查看模型中的ActiveRecord回调:

    #app/models/parent.rb
    Class Parent < ActiveRecord::Base
       before_create :build_child
    end
    
    #app/models/parent.rb
    类父级

    这将在创建父对象之前构建子对象,这意味着在保存父对象时,将同时创建子对象。这将允许您在与父对象交互时创建子对象。为确保正确填充子级数据,您需要使用回调的实例方法

    尽管您的问题相当详细,但我建议您查看模型中的ActiveRecord回调:

    #app/models/parent.rb
    Class Parent < ActiveRecord::Base
       before_create :build_child
    end
    
    #app/models/parent.rb
    类父级

    这将在创建父对象之前构建子对象,这意味着在保存父对象时,将同时创建子对象。这将允许您在与父对象交互时创建子对象。为确保正确填充子级数据,您需要使用回调的实例方法

    尽管您的问题相当详细,但我建议您查看模型中的ActiveRecord回调:

    #app/models/parent.rb
    Class Parent < ActiveRecord::Base
       before_create :build_child
    end
    
    #app/models/parent.rb
    类父级
    这将在创建父对象之前构建子对象,这意味着在保存父对象时,将同时创建子对象。这将允许您在与父对象交互时创建子对象。为了确保正确填充子对象的数据,您需要在callbac中使用实例方法