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/