Module: ActiveRecord::Persistence
- Included in:
- Base
- Defined in:
- lib/jun/active_record/persistence.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.included(klass) ⇒ Object
5 6 7 |
# File 'lib/jun/active_record/persistence.rb', line 5 def self.included(klass) klass.extend(ClassMethods) end |
Instance Method Details
#new_record? ⇒ Boolean
52 53 54 |
# File 'lib/jun/active_record/persistence.rb', line 52 def new_record? @new_record end |
#persisted? ⇒ Boolean
56 57 58 |
# File 'lib/jun/active_record/persistence.rb', line 56 def persisted? !new_record? end |
#save ⇒ Object
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( <<~SQL INSERT INTO #{self.class.table_name} (#{@attributes.keys.join(",")}) VALUES (#{@attributes.values.map { |v| "'#{v}'" }.join(",")}) RETURNING *; SQL ) @attributes[self.class.primary_key] = result.first[self.class.primary_key] @new_record = false else self.class.connection.execute( <<~SQL UPDATE #{self.class.table_name} SET #{@attributes.map { |k, v| "#{k} = #{v.nil? ? 'NULL' : "'#{v}'"}" }.join(",")} WHERE id = #{id}; SQL ) end true end |