gpt4 book ai didi

ruby-on-rails - 包含数据库和非数据库数据源的 Rails 模型应该如何分解?

转载 作者:太空宇宙 更新时间:2023-11-03 16:58:53 25 4
gpt4 key购买 nike

所以我正在开发一个 Rails 应用程序来感受整个过程。我有一个 Product 模型,它是一个标准的 ActiveRecord 模型。但是,我还想从 Amazon ECS 获得一些额外的产品信息。所以我的完整模型从数据库中获取一些信息,从网络服务中获取一些信息。我的问题是,我应该:

  1. 将两个模型分别设为 Product 和 ProductAWS,然后在 Controller 级别将它们绑定(bind)在一起。

  2. Product ActiveRecord 模型是否包含执行所有 AWS 操作的 ProductAWS 对象?

  3. 只需将所有 AWS 功能添加到我的产品模型中即可。

  4. ???

最佳答案

与大多数事情一样:视情况而定。你的每一个想法都有其优点。如果是我,我会这样开始:

  class Product < ActiveRecord::Base
has_one :aws_item
end
class AWSItem
belongs_to :product
end

你想问自己的关键问题是:

您是只提供 AWS ECS 产品,还是会提供其他产品?如果您有与亚马逊无关的产品,请不要关心 ASIN 等,然后 has_one 可能是要走的路。或者,更好的是,与 :vendable 接口(interface)的多态关系,这样您以后可以插入不同的扩展类型。

仅仅是行为不同,还是数据也会有很大不同?因为您可能需要考虑:

class Product < ActiveRecord::Base
end
class AWSItem < Product
def do_amazon_stuff
...
end
end

当 Amazon ECS 不可用时,您希望系统如何执行?它应该抛出异常吗?还是应该依赖目录的本地缓存版本?

class Product < ActiveRecord::Base

end

class ItemFetcher < BackgrounDRb::Rails
def do_work
# .... Make a cached copy of your ECS catalog here.
# Copy the Amazon stuff into your local model
end
end

慢慢地浏览这些问题,答案会变得更加清晰。如果没有,请开始制作原型(prototype)。祝你好运!

关于ruby-on-rails - 包含数据库和非数据库数据源的 Rails 模型应该如何分解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70397/

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