我该如何组织这个Rails代码的流程?

时间:2011-08-18 19:00:18

标签: ruby-on-rails ruby ruby-on-rails-3 refactoring organization

我正在使用Shippinglogic收集提交的跟踪号码的跟踪信息。

我正在处理UI幕后的一些事情,但我不确定如何正确组织它。

所以这是流程:

  1. 用户通过表单输入或URL提交跟踪号码(example.com/track/1234567890)。如果数据库中尚不存在该号码,则下一步将发生......
  2. 提交号码后,我通过一些逻辑运行号码以确定运营商是谁(UPS,FedEx,USPS,DHL等)。用户从不指定......这一切都是自动完成的。
  3. 确定运营商后,我需要实际调用运营商API(通过Shippinglogic)以获取跟踪信息。
  4. 获取跟踪详细信息后,我需要将其保存到数据库中。
  5. 然后,跟踪详细信息最终返回给用户。
  6. 由于用户可以通过表单或URL提交(没有任何类型的POST操作),我试图通过控制器中的show方法运行它,我检查数字是否存在,如果没有,请通过Number.create(:tracking_number => '1234567890')提交,但是一旦我进入模型,我就会对下一步该做什么感到迷茫。

1 个答案:

答案 0 :(得分:0)

好吧,我会让用户定向到新的或创建操作,您可以在其中处理创建并检测记录是否已存在。一旦处理完毕,您很可能希望将它们发送到显示页面,您可以在其中显示数据源中的跟踪信息以及您在数据库中保存的所有信息。这样您就可以保留应用程序的性质,而其他开发人员可以根据需要使用该应用程序。

修改 我有一个这样的项目,我将检测代码移到模型中的一个单独的函数中,这样我就可以对它进行更改并从模型上的特定调用中抽象出来。我在模型的后台执行了我的API请求,因此我可以在数据库中缓存数据并刷新每小时一次被认为有效的记录。

基本上,如果需要使用记录中的数据或将一些数据保存为记录的一部分,我在模型中创建了一个函数。这使我能够将一堆函数从对控制器操作等的特定修改中分离出来。