2008/4/7, dare ruby <martin / angleritech.com>:
> Dear all,
>
>  I have created a test file like,
>
>  <code>
>
>  require 'product'
>
>  product = Product.new('aaaa aaa', 'uuuu')
>
>   </code>
>
>  I have passed two strings while initializing an object
>
>  now in actual product class file
>
>  <code>
>
>  class Product
>
>   attr_accessor :name
>   protected :name
>
>   attr_accessor :description
>   protected :description
>
>   attr_accessor :categories
>   protected :categories
>
>   def initialize( *args )
>
>    # extract the attributes from the given arguments
>
>     attributes = args.last.is_a?( ::Hash ) ? args.pop : {}
>
>     # initialize attributes
>
>     @name = attributes[ :name ] || String.new

You can as well use "" instead of String.new

>     @description = attributes[ :description ] || String.new
>     @categories = attributes[ :description ] || Array.new
>
>   end
>
>
>  end
>
>  </code>
>
>  i have to used the arguments passed and get processed but i was not able
>  to retrieve string using above initialize method. please suggest a way
>  to proceed further.
>
>  while testing iam getting only blank space for @name, @description,
>  @categories.
>
>  please suggest a way so that ican read my arguments in product class
>  using above same initialize method.

If you want to get values from a Hash you need to pass a Hash.

product = Product.new(:name => 'aaaa aaa', :foo => 'uuuu')

Cheers

robert

-- 
use.inject do |as, often| as.you_can - without end