与大多数事情一样:这取决于。你的每个想法都有其优点。如果是我,我会开始时是这样的:
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
你怎么想执行时,亚马逊的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
通过这些问题,慢慢地走,答案将变得更加清晰。如果没有,请开始原型设计。祝你好运!
那么,我已经有一个客户端库。 – bhollis 2008-09-18 06:39:12