我正在寻找从其他网站获取数据的代码的“rails”设计模式。
我的应用程序中有一个rails控制器,它不是从数据库中获取数据,而是从外部API获取数据或从Web上获取数据。
放置此代码的“rails”位置。
为了快速实现,我只是把它放在模型中,但模型不与数据库交互 - 或者支持标准模型功能 - 所以感觉不对,但我对rails和ruby的理解还不够坚固知道它应该去哪里。
代码的工作方式大致如下 controller调用model.fetchData args 该模型使用HTTParty或类似方式进行调用 处理数据 将其传递回控制器
有什么建议吗?
答案 0 :(得分:1)
从广义上讲,我认为有两种可能的方法可以做到这一点:
include HTTParty
的HTTParty模块。放置此代码的通常位置是在lib /中(确保无论您放在哪里,路径都在autoload_paths)。注意我没有提到activerecord。如果您不打算将任何内容保存到数据库中,我认为甚至不需要创建任何活动记录模型。您可以使用控制器和视图,然后(如果需要)从activemodel中选择组件(验证,国际化等),以使您的ruby API包装类感觉更像Rails模型。例如,我在我正在处理的应用程序中完成的一件事是在实际向外部API发出请求之前应用验证来查询字符串,这有点像在查询数据库之前对数据库查询运行验证。请参阅Yehuda Katz的this article,了解有关如何使普通红宝石物体感觉像主动记录模型的更多信息。
希望有所帮助。我昨天回答了另一个与此问题非常类似的问题,您可能也希望看一下这个答案:Using rails to consume web services/apis