ruby-on-rails-3 – ActiveResource和ActiveModel有什么区别?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails-3 – ActiveResource和ActiveModel有什么区别?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
作为这个问题的序言:我是Rails开发(和Web开发一般)的全新,我的一些担心可能是毫无根据的,所以任何反馈都将是非常有帮助的.

我试图制作一个插入RESTful API的Rails应用程序.我一直在努力确定最好的方法,从我所理解的,它缩小到从头开始使用自己的模型,利用ActiveModel或利用ActiveResource.

我不清楚每个的优点/缺点,坦白说,我还没有完全了解ActiveModel和ActiveResource之间的区别.有人可以为我提供关于这三个选项的洞察力,什么使得最有意义的在一个ror语境中?谢谢!

最好的答案不仅仅是说“使用ActiveModel”或者“使用ActiveResource”这样的说明,但这也是有帮助的.我真的很感谢一个答案,解释为什么我应该使用这个东西等

我正在处理的一些限制是,当我调用API时,我需要使用一个键,并且大量的API调用将包含其他参数.

解决方法

所以选择使用这个包的关键在于:

>您正在从Web API检索数据,并希望
存储/操纵您的服务器,或
>您是通过Web API操作数据,不打算在您的服务器上存储任何东西.

如果#1,您将需要ActiveRecord,因为它是用于在Postgres / MysqL / etc数据库上操作和存储数据的Rails包.

如果#2,您可以专门使用ActiveResource,这将允许您从Web API检索数据,在运行时使用它,然后通过发回到Web API进行更改.

不过,很多应用程序通常会使用这两个软件包. ActiveResource很容易抓取数据,然后将其应用到ActiveRecord模型(如用户或位置等),您可以在本地使用,而无需再次从API中抓取数据.

为了给你一个例子,对于正在开发的服务,我从公共源(查找邮政编码的坐标)中获取了Geolocation数据,然后使用ActiveRecord将该数据保存到本地Location对象,所以我可以重复地查找它们,而不会延迟的Web API调用. (如果您很聪明,您将不时从网络API刷新此数据)

确定ActiveResource是否适合您

服务请求是否符合documentation协议?例如,在Find方法中查看Expects对块的响应.如果是这样,你可能没有额外的工作是好的.

注意:文档与更改日志有点不同步 – 从Rails 3.1开始:

The default format has been changed to JSON for all requests. If you want to continue to use XML you will need to set self.format = :xml in the class. eg.

此外,ActiveResource已经完全从Rails 4.0分支中删除,因此,如果您期待着启动一个新的rails应用程序,并希望最新和最好的,这根本不是一个选择 – 但是所有希望都不会丢失,那里有很多宝石与RESTful接口的交互更简单,如Faraday(完全披露:我没有使用法拉第自己,所以可以真正评论其功效,但我认为它为here,还有其他一些选择.

注意(来自上面相同的链接):活动资源基于标准的XML格式,用于通过HTTP请求和提交资源.它反映了Action Controller内置的RESTful路由器,但也可以与正确实现协议的任何其他REST服务配合使用. REST使用HTTP,但与“典型”Web应用程序不同,它使用HTTP规范中可用的所有动词.

如果上面的答案是否定(不符合),您将需要编写一个包装类,参见Facebooker,了解如何在一个主动维护的gem中完成这个操作.

参考文献:
Great tutorial on ActiveResource

Getting started with ActiveRecord

请记住,如果您刚刚开始Web开发,您还需要了解数据库和模型基础知识 – 您的工作将为您解决.

猜你在找的Ruby相关文章