Thanks Fred.

I got the following error.
NoMethodError in ProductsController#search
undefined method `stringify_keys!' for #<Amazon::Element:0x10373c6a8>
/Library/User/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/
base.rb:2731:in `attributes='
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/
base.rb:2434:in `initialize'
/Users/User/Documents/Aptana Studio Workspace/Flatworld/app/models/
product.rb:5:in `initialize'
/Users/User/Documents/Aptana Studio Workspace/Flatworld/app/models/
products.rb:31:in `new'
.... [more]

and actual code for the model class is:
----------------------------------------------------------------
class Product < ActiveRecord::Base
  has_many :inventories

  def initialize(item)
    super
    @amazon_asin = item.get('asin')
    @manufacturer = item.get('itemattributes/manufacturer')
    @name = item.get('itemattributes/title')
    @releasedate = item.get('itemattributes/releasedate')
    @amazon_url = item.get('detailpageurl')
    @amazon_image = item.get_hash('smallimage')
  end
----------------------------------------------------------------
item is the result from Amazon API search result. I am trying to
instantiate Product class with the result data set.
Is this right approach to instantiate model class by overriding
initialize method with super method within?

Ryo


On 11月8日, 午後6:27, Frederick Cheung <[email protected]> wrote:
> On Nov 8, 8:04 am, RyoichiroKamiya<[email protected]>
> wrote:
>
> > Hi,
>
> > I am trying to set initial process when instantiating model by  
> > overriding initialize() method which takes arguments. The initialize()  
> > method overrides the parent ActiveRecord::Base class's by taking  
> > arguments and assign arguments to its instance variables.
>
> > class Product < ActiveRecord::Base
>
> >    def initialize(item = nil)
> >      super
> >      # and then process to assign variables from item argument to  
> > instance variables
> >      # ....
> >    end
>
> What does the actual code in there look like? What is the error that
> you get ?
>
> Fred
>
>
>
> > In order to fully leverage ActiveRecord::Base class functionality, I'm  
> > calling super to run the default initialization process (i.e. set up  
> > all setter/getter methods). However, the Product class above still  
> > can't find getter/setter methods for its variables. In the meantime, I  
> > found the following blog article suggesting use after_initialize  
> > instead of overriding Active Record object.
>
> > Rails: Don't override initialize on ActiveRecord 
> > objectshttp://blog.dalethatcher.com/2008/03/rails-dont-override-initialize-o...
>
> > I could not find ways to set arguments for this after_initialize  
> > approach.
>
> > Can anybody advise should I override initialize() or use  
> > after_initialize with some ways to take arguments?
>
> > Thanks,
> > Ryo
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to