I want to create a alias method in ruby and pass parameters to this. I managed to do the following
class User
def say_name
puts "I'm sameera"
end
end
class User
alias :tell_name :say_name
def say_name
puts "I'm sameera gayan"
tell_name
end
end
user = User.new
user.say_name
and it gives me the out put as
I'm sameera gayan I'm sameera
But now i want to pass my name as a parameter to the first 'say_name' method. So the new code will be like
class User
def say_name(name)
puts "#{name}"
end
end
class User
alias :tell_name :say_name(name)
def say_name(name)
puts "I'm sameera gayan"
tell_name(name)
end
end
user = User.new
user.say_name("my new name")
But now this doesn't work (passing parameter to alias method). So my question is how to pass parameters to an alias method.
I hope this question is clear to you. Thanks in advance
cheers
sameera
I tried this one and came to this solution
class User
def say_name(name)
puts "#{name}"
end
end
class User
alias :tell_name :say_name
def say_name(name)
puts "Hi"
tell_name(name)
end
end
user = User.new
user.say_name("Rohit")
The reason this is working because we cannot pass arguments to aliases. And that is what you were trying to do.
I'm learning Ruby. So when I saw this question I decided to try it. Though I have yet to learn about aliasing methods in detail I came across a solution. Don't know if it is the way it should be done. And can't say why it is so yet. May be in a few days after I have learn't in depth I'll add it. For now, here is a working solution.
class User
attr_accessor :name
def say_name
puts "#{name}"
end
end
class User
alias :tell_name :say_name
def say_name
puts "I'm sameera gayan"
tell_name
end
end
user = User.new
user.name = "Sameera"
user.say_name
This qtn also helped me in the process.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With