Class yapılarımızda aşağıdakine benzer yöntemlerin tanımlanması ayrıntılı ve gereksizdir.
def failure
self.state = :failure
end
def error
self.state = :error
end
def success
self.state = :success
endBunun yerine şöyle bir kod işimizi görür.
[:failure, :error, :success].each do |method|
define_method method do
self.state = method
end
endBaşka bir örnek görelim. Rails uygulamamızda Post modelimizdeki state alanındaki verilere göre örneğin published?, draft?, archived? şeklinde metodlara ihtiyacımız var.
# app/model/post.rb
class Post < ActiveRecord::Base
STATES = %w(published, draft, archived)
STATES.each do |s|
define_method "#{s}?" do
self.state == s
end
end
endSon olarak bunları öğrenince ben:
