Try and say my name!
藤堂さんからすごいプレゼントがやってきた!
ケロロだ。
うおー、ジャキ様だ。すごい。誕生日プレゼントにこんなのもらったのは初めてです。なにより、ネタのためにプレゼントをする藤堂さんがすごい。ありがとうございます。大事にお家にいるときにだけ着させていただきます。
2007年02月10日の日記でkaeruspoonのAmazon機能のソースをちょっとのせていたけど、オーバライドを使うのが自然だと思ったので以下のようにしてみました。
class AmazonList < ActiveRecord::Base
include REXML
has_and_belongs_to_many :diaries
ASSOCIATE_TAG = 'アソシエートID'
AWS_ACCESS_KEY_ID = 'ECS用ID'
SEARCH_ELEMENT = 'ItemLookupResponse/Items/Item/'
def self.find_by_asin(asin)
Net::HTTP.version_1_2
item = super(asin)
if (item == nil) || (item.updated_on.to_time.since(7.days) < Time.now)
amazon_list = Hash.new
Net::HTTP::start('webservices.amazon.co.jp') do |http|
……以下略
それからかえる記法のパーサに関しては、Windowsぶっ壊れ事件のごたごたでまだ手を付けていません。一時はコントローラにパーサの処理を持ってこようとも思ったのだけど(解析しながらAmazonのデータを取得する必要があるから)、habtmを使って日記とAmazon商品の間にリレーションシップをはりました。でもこれって、ヘルパー上のパーサで実際にAmazonデータを取得するときにDBにアクセスする気がする。コントローラ上でfindしたときはリレーションシップ先のレコードまで読まないよね?(違うかもしれないけど)
Viewの処理中にDBにアクセスしていると思うとちょっと気持ち悪い気がするけど、ここまで気にしなくてもいいのかな。