我正尝试在我的Rails应用程序中使用从外部API检索信息的模型。我想要做的是以类似于ActiveRecord模型提供的方式访问我的数据模型(可能由多个API调用产生的信息组成)(具体地说,是关联和相同风格的链式查询方法)。
我最初的直觉是重新创建我想要的ActiveRecord部分,并合并这个API。
因为ActiveModel似乎只包含验证,所以我不确定这在这种情况下有多大帮助。
Here是我试图重新创建ActiveRecord功能时编写的一些代码的要点,大量借鉴了ActiveRecord源代码本身。
我的问题可以归结为:我可以通过实现上面指定的ActiveRecord变通方法或自己重新创建功能来获得我想要的功能(链接查询方法,关系),但这些真的是理想的解决方案吗?
发布于 2013-06-13 01:41:10
记住,Rails在本质上仍然只是Ruby。
您可以将外部API表示为应用程序中的实例化类。
class Event
def self.find(id)
#...External http call to get some JSON...#
new(json_from_api)
end
def initialize(json)
#...set up your object here...#
end
def attendees
#...external http call to get some JSON and then assemble it
#...into an array of other objects
end
end因此,你最终需要编写本地抽象来从api调用中创建ruby对象,你可能还可以在其中混入ActiveModel或Virtus,这样你就可以使用属性的散列赋值,以及表单的验证等。
看一下我为tube的TfL提要做的一个API抽象。service_disruption
https://stackoverflow.com/questions/15313535
复制相似问题