i'm somewhat new to rails and ruby.
whenever i create a new object in ruby i use
o = ClassName.new
but recently i bumped into the following code (in rails)
rating = Rating.new(:rating => params[:rating])
i can't understand what it means. i looked at the class definition for
Rating and didn't see any attributes or methods named rating. i also
didn't see the constructor in there (i.e. initialize method) i would
really appreciate if someone offer an explanation of what is happening
and if there are more ways of creating an object.
any help is appreciated
···
--
Posted via http://www.ruby-forum.com/.
The reason you don't see an initialize method is because Rails models
inherit from ActiveRecord::Base, which sets that up for you.
rating = Rating.new(:rating => params[:rating])
i can't understand what it means.
It's just a regular call to Rating.new, but it's using the special
syntax for sending a hash as an argument.
:rating is a symbol, used as the key in the hash. It refers to
params[:rating].
Try playing with this in irb
# Tested with ruby 1.9.2
# Lets see what food is in the fridge!
def peek fridge
puts "fridge was a #{fridge.class}"
puts "The cheese was: #{fridge[:cheese]}"
puts "The vegetable was: #{fridge[:vegetable]}"
end
# This is closer to the code in your problem
peek(:cheese => :cheddar, :vegetable => :leeks)
# But you can do it with hands free syntax too!
peek :cheese => :brie, :vegetable => :broccoli
Read about this in the pickaxe
http://ruby-doc.org/docs/ProgrammingRuby/html/tut_methods.html#UE
(or as more uncouth elements may say, RTFM)
Johnny
P.S. Whoever wrote that piece of code seems to really like the word
rating.
Johnny M. wrote in post #969685:
rating = Rating.new(:rating => params[:rating])
i can't understand what it means.
It's just a regular call to Rating.new, but it's using the special
syntax for sending a hash as an argument.
:rating is a symbol, used as the key in the hash. It refers to
params[:rating].
Try playing with this in irb
# Tested with ruby 1.9.2
# Lets see what food is in the fridge!
def peek fridge
puts "fridge was a #{fridge.class}"
puts "The cheese was: #{fridge[:cheese]}"
puts "The vegetable was: #{fridge[:vegetable]}"
end
# This is closer to the code in your problem
peek(:cheese => :cheddar, :vegetable => :leeks)
# But you can do it with hands free syntax too!
peek :cheese => :brie, :vegetable => :broccoli
Read about this in the pickaxe
Programming Ruby: The Pragmatic Programmer's Guide
(or as more uncouth elements may say, RTFM)
Johnny
P.S. Whoever wrote that piece of code seems to really like the word
rating.
i understood that it was a hash, but i couldn't figure what is going to
happen when we pass a hash to the new method. i couldn't find the
initialize method in the class definition.
i tried the following code in irb but i received an error
class SomeClass
end
s = SomeClass.new(:rating => params[:rating])
does it mean that i simply initialize is defined somewhere else since i
received an error?
···
--
Posted via http://www.ruby-forum.com/\.
Yes, most probably, your Rating class inherits from
ActiveRecord::Base, which as Steve said sets up a lot of method for
your class, one of them being the initialize method that receives a
hash.
Jesus.
···
On Tue, Dec 21, 2010 at 3:18 AM, Rail Shafigulin <rail.shafigulin@gmail.com> wrote:
Johnny M. wrote in post #969685:
rating = Rating.new(:rating => params[:rating])
i can't understand what it means.
It's just a regular call to Rating.new, but it's using the special
syntax for sending a hash as an argument.
:rating is a symbol, used as the key in the hash. It refers to
params[:rating].
Try playing with this in irb
# Tested with ruby 1.9.2
# Lets see what food is in the fridge!
def peek fridge
puts "fridge was a #{fridge.class}"
puts "The cheese was: #{fridge[:cheese]}"
puts "The vegetable was: #{fridge[:vegetable]}"
end
# This is closer to the code in your problem
peek(:cheese => :cheddar, :vegetable => :leeks)
# But you can do it with hands free syntax too!
peek :cheese => :brie, :vegetable => :broccoli
Read about this in the pickaxe
Programming Ruby: The Pragmatic Programmer's Guide
(or as more uncouth elements may say, RTFM)
Johnny
P.S. Whoever wrote that piece of code seems to really like the word
rating.
i understood that it was a hash, but i couldn't figure what is going to
happen when we pass a hash to the new method. i couldn't find the
initialize method in the class definition.
i tried the following code in irb but i received an error
class SomeClass
end
s = SomeClass.new(:rating => params[:rating])
does it mean that i simply initialize is defined somewhere else since i
received an error?