ほとんどのものと同様に、状況によります。あなたのアイデアにはそれぞれメリットがあります。私だったら、次のように始めます。
class Product < ActiveRecord::Base
has_one :aws_item
end
class AWSItem
belongs_to :product
end
自問したい主な質問は次のとおりです。
AWS ECS アイテムのみを提供する予定ですか、それとも他の製品を提供する予定ですか? Amazon とは何の関係もない、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
これらの質問をゆっくりと見ていくと、答えがより明確になります。そうでない場合は、プロトタイプの作成を開始します。幸運を!