和大多数事情一样:这取决于情况。你的每一个想法都有价值。如果是我,我会这样开始:
class Product < ActiveRecord::Base
has_one :aws_item
end
class AWSItem
belongs_to :product
end
你想问自己的关键问题是:
您是只提供AWS ECS产品,还是会提供其他产品如果你的产品与亚马逊无关,不关心ASIN等,那么has_one可能是你的选择。或者,更好的是,与可销售接口的多态关系,这样您以后就可以插入不同的扩展类型。
是只是行为不同,还是数据也会有很大不同因为您可能需要考虑:
class Product < ActiveRecord::Base
end
class AWSItem < Product
def do_amazon_stuff
...
end
end
当亚马逊云服务器不可用时,您希望系统如何运行它应该抛出异常吗?还是应该依赖目录的本地缓存版本?
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
慢慢地走过这些问题,答案会变得更清楚。如果没有,就开始制作原型。祝你好运