Method: ActiveRecord::Persistence#save

Defined in:
lib/jun/active_record/persistence.rb

#saveObject



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/jun/active_record/persistence.rb', line 26

def save
  if new_record?
    result = self.class.connection.execute(
      "        INSERT INTO \#{self.class.table_name}\n        (\#{@attributes.keys.join(\",\")})\n        VALUES (\#{@attributes.values.map { |v| \"'\#{v}'\" }.join(\",\")})\n        RETURNING *;\n      SQL\n    )\n\n    @attributes[self.class.primary_key] = result.first[self.class.primary_key]\n    @new_record = false\n  else\n    self.class.connection.execute(\n      <<~SQL\n        UPDATE \#{self.class.table_name}\n        SET \#{@attributes.map { |k, v| \"\#{k} = \#{v.nil? ? 'NULL' : \"'\#{v}'\"}\" }.join(\",\")}\n        WHERE id = \#{id};\n      SQL\n    )\n  end\n\n  true\nend\n"