Quick Answer
Metaprogramming technique to handle undefined methods.
Understanding the Issue
method_missing is called when an object receives a message it doesn't understand. It's powerful for DSLs and dynamic proxies.
The Problem
This code demonstrates the issue:
Ruby
Error
# Problem: Undefined methods
class User
attr_accessor :name
end
user = User.new
user.first_name # NoMethodError
The Solution
Here's the corrected code:
Ruby
Fixed
# Solution: Dynamic handling
class User
def method_missing(name, *args)
if name.to_s.start_with?('first_')
send(name.to_s.sub('first_', 'name'))
else
super
end
end
end
Key Takeaways
Use method_missing carefully and implement respond_to_missing?.