define_method in Ruby

define_method is a (private) method of the object Class. You are calling it from an instance.

define_method(:my_method) do |foo, bar| # or even |*args|
  # do something
end

or, you could even use string interpolation in the method name, such as 

define_method("#{attribute}=") do |unencrypted_password|
  if unencrypted_password.nil?
    self.send("#{attribute}_digest=", nil)
  elsif !unencrypted_password.empty?
    instance_variable_set("@#{attribute}", unencrypted_password)
  cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST : BCrypt::Engine.cost
  self.send("#{attribute}_digest=", BCrypt::Password.create(unencrypted_password, cost: cost))
  end
end