LoginSignup
9
8

More than 5 years have passed since last update.

動的にアクセサを追加

Posted at

via http://rubymotion-tutorial.com/7-models/

class Hoge
  Properties = [:name, :email]
  Properties.each do |prop|
    attr_accessor prop
  end

  def initialize(hash = {})
    hash.each do |key, value|
      if Properties.member? key.to_sym
        self.send((key.to_s + '=').to_s, value)
      end
    end
  end
end

h = Hoge.new
h.name = "HogeName"
h.email = "hoge@hogehoge.jp"

p h.name  # => "HogeName"
p h.email # => "hoge@hogehoge.jp"

h = Hoge.new({name: "FugaName", email: "fuga@fugafuga.jp"})
p h.name  # => "FugaName"
p h.email # => "fuga@fugafuga.jp"
9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8