This "acts_as" module makes it extremely simple to add Amazon integration to an existing model.
Install the latest gem:
gem install acts_as_amazon_product
Or, download it from rubyforge
http://rubyforge.org/projects/aaap/
Or, get the source code from github.com/netphase/aaap using
git clone git://github.com/netphase/aaap.git
This code does not require changing any current database tables. It only requires adding one migration for a single new table used to cache responses from Amazon:
ActiveRecord::Base.connection.create_table :amazon_products do |t|
t.column :asin, :string
t.column :xml, :text
t.column :created_at, :datetime, :null => false
t.column :amazonable_id, :integer, :default => 0, :null => false
t.column :amazonable_type, :string, :limit => 15, :default => "", :null => false
end
Add the "acts_as" line to your model. Only :access_key is required. The :asin and :name assignments override what attributes in your class should be used for a direct lookup (item_looup) or general search (item_search). If no value is assigned to :asin then a general search is made and the first item (sorted by salesrank) is assigned (this functionality will likely change).
require 'acts_as_amazon_product'
class Book < ActiveRecord::Base
acts_as_amazon_product :asin => 'isbn', :name => 'title',
:access_key => '0123456', :associate_tag => 'assoc-20'
end
You can now access the Amazon data in your views like so (see):
@book = Book.new(:title => 'Getting Things Done')
@book.amazon.isbn
@book.amazon.title
@book.amazon.author
@book.amazon.small_image_url
or
@book.amazon.get('itemattributes/foobar')
There are tests you can run in the [gem]/test directory. Just create a test/config.yml from the example and run "Rake test" from the [gem] directory.
acts_as_amazon_product was created by Scott Nedderman and Chris Beck from netphase.com
We‘d love to here how you like it. Also, if you‘d like us to help out with your next project, let us know.