所以我正在开发一个Rails应用程序来获得对整个事情的感觉我有一个标准的ActiveRecord模型不过,我还想从Amazon ECS获得一些额外的产品信息所以我的完整模型从数据库和web服务中获取一些信息我的问题是,我应该:
使两个模型成为一个产品和一个产品aws,然后在控制器级别将它们绑定在一起。
product activerecord模型是否包含一个product aws对象来完成所有aws的工作?
只需将所有aws功能添加到我的产品模型中。
???

最佳答案

就像大多数事情一样:这取决于你的每一个想法都有价值。如果是我,我会这样开始:

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

你想问自己的关键问题是:
您是只提供AWS ECS产品,还是有其他产品?如果你有与亚马逊无关的产品,不在乎ASIN等,那么has_one可能是你的选择或者,更好的是,与:vendable接口的多态关系,以便以后可以插入不同的扩展类型。
只是行为不同,还是数据也会大不相同因为你可能想考虑:
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

慢慢地回答这些问题,答案就会更清楚如果没有,就开始制作原型祝你好运!

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

10-09 16:07
查看更多