Methods can be defined dynamically in ruby. Practially I felt like implementing :dynamic_method in my application when there were some values in the database and I had to create methods(method name) depending on those values.
For example - I have a Customer model and it can be of two types - individual/non_individual. So I had to make these two methods(individual?/non_individual?) available on the customer instance.
# Methods like [individual?, non_individual?] will become available on any customer instance.
Attribute.find_by_key('CUSTOMER_TYPE').attribute_choices.each do |attr_choice|
define_method("#{attr_choice.value.downcase.underscore}?") { customer_type_attribute == attr_choice }
end