gpt4 book ai didi

ruby-on-rails - 在 Ruby on Rails 中为由外部 API 支持的模型使用 ActiveRecord 接口(interface)

转载 作者:数据小太阳 更新时间:2023-10-29 07:00:40 25 4
gpt4 key购买 nike

我正在尝试在我的 Rails 应用程序中使用模型来从外部 API 检索信息。我想做的是以类似于 ActiveRecord 模型提供的方式(特别是关联,以及相同风格的可链接查询方法)访问我的数据模型(可能包含来自多个 API 调用的信息)。

我最初的直觉是重新创建我想要的 ActiveRecord 部分并合并此 API。不想“重新发明轮子”并确切地看到添加更多功能需要多少工作让我退后一步并重新评估如何处理这个问题。

我找到了在没有表的情况下使用 ActiveRecord 的方法(请参阅:Railscast #193 Tableless Model 和博客文章 here)并研究了 ActiveRecord。因为 ActiveModel 似乎只包含验证,所以我不确定这在这种情况下是否很有帮助。在没有表的情况下使用 ActiveRecord 的解决方法似乎是最好的选择,但我怀疑有一种我只是没有看到的更简洁的方法。

Here是一个要点,其中包含我在尝试重新创建 ActiveRecord 功能时编写的一些代码,大量借鉴了 ActiveRecord 源代码本身。

我的问题归结为:我可以通过对上面指定的 ActiveRecord 实现解决方法或自己重新创建功能来获得我想要的功能(链接查询方法、关系),但这些真的是理想的解决方案吗?

最佳答案

请记住,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 混入其中,这样你就可以使用属性的散列分配和表单验证等。

看看我为 TfL feed 为 tube 所做的 API 抽象。 service_disruption

关于ruby-on-rails - 在 Ruby on Rails 中为由外部 API 支持的模型使用 ActiveRecord 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15313535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com