-
-
Save erizye/c4d780ade52504d2a75c to your computer and use it in GitHub Desktop.
Revisions
-
mayfer created this gist
Sep 17, 2014 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,64 @@ 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", "[email protected]", "1234234", "doesnt matter in this day and age") puts murat.save