Topic: Ruby question: method parameter types

I may be in the completely wrong forum to post this, but its the one I am subscribed to.

I'm a converted Java/C style programmer.  I'm curious if this is a decent way to write a method in ruby using hash parameters...

29   def add(args)
30     raise ArgumentError, "One of :line_item or :item is required" if args[:item].nil? and args[:line_item].nil?
31     raise ArgumentError, ":line_item should be a LineItem" if !args[:line_item].nil? and !args[:line_item].is_a?(LineItem)
32     raise ArgumentError, ":item should be an Item" if !args[:item].nil? and !args[:item].is_a?(Item)
33
34     #either find the line item or create a new one...
35     line_item = args[:line_item] || LineItem.new_from_item(:item=>args[:item])
36
37     #the default quantity is 1
38     args[:quantity] ||= 1
39     args[:quantity] = 1 if args[:quantity] < 1