class ORM def save table_name = self.class instance_variable_names = self.instance_variables.map do |i| i.slice(1, i.length) end instance_variable_values = self.instance_variables.map do |i| self.instance_variable_get("#{i}") end if self.id == nil sql_columns = instance_variable_names.join(', ') sql_values_arr = [] self.instance_variables.each do |i| sql_values_arr << '"' << self.instance_variable_get("#{i}") << '"' end sql_values = sql_values_arr.join(", ") sql_command = "INSERT INTO #{table_name} (#{sql_columns}) VALUES (#{sql_values})" else components = [] instance_variable_names.each do |ivn| value = self.instance_variable_get("@#{ivn}") component = "#{ivn}='#{value}'" components << component end components_string = components.join(', ') query = "UPDATE #{table_name} SET #{components_string}" end end end class User < ORM attr_accessor :id, :name, :email, :phone def initialize(name, email, phone, gender, id=nil) @id = id @name = name @email = email @phone = phone @gender = gender end end class Dog < ORM attr_accessor :num_legs, :personality_type, :bark_pitch end dog = Dog.new dog.num_legs = 3 dog.personality_type = 'evil' dog.bark_pitch = 'high pitched' puts dog.save murat = User.new("murat", "a@b.c", "1234234", "doesnt matter in this day and age") puts murat.save