How to create a product instance?

Dear all,

I have created a test file like,

require ‘product’

product = Product.new(‘aaaa aaa’, ‘uuuu’)

I have passed two strings while initializing an object

now in actual product class file

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
@description = attributes[ :description ] || String.new
@categories = attributes[ :description ] || Array.new

end

end

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.

thanks in advance

Regards,
Jose martin

2008/4/7, dare ruby [email protected]:

protected :name
attributes = args.last.is_a?( ::Hash ) ? args.pop : {}

# initialize attributes

@name = attributes[ :name ] || String.new

You can as well use “” instead of String.new

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

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

I have even tried by passing using a hash but its not working. but for
me i need to pass the arguments as an array. so could you please suggest
some way to proceed.

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

Product.new({:name => ‘blah’})

is the same as

Product.new(:name => ‘blah’)

Learn Ruby on Rails! Check out the FREE VIDS (for a limited time)
VIDEO #3 out NOW!
http://sensei.zenunit.com/

Thank you very much julian and robert its working well now. Thank you
julian for the video files.

Why do you need to pass arguments as an array?

this way you mention:

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

that IS a hash.

Product.new({:name => ‘blah’})

is the same as

Product.new(:name => ‘blah’)

Or do you mean an array of arrays?

Julian.

Learn Ruby on Rails! Check out the FREE VIDS (for a limited time)
VIDEO #3 out NOW!
http://sensei.zenunit.com/