Module: Hammock::ActiveRecordPatches::InstanceMethods
- Defined in:
- lib/hammock/monkey_patches/active_record.rb
Instance Method Summary collapse
- #adjust(attrs) ⇒ Object
- #base_model ⇒ Object
- #concise_inspect ⇒ Object
- #description ⇒ Object
- #id_str ⇒ Object
- #new_or_deleted_before_save? ⇒ Boolean
-
#offset!(attribute, offset) ⇒ Object
Offset
attribute
byoffset
atomically in SQL. - #record? ⇒ Boolean
- #resource ⇒ Object
- #resource? ⇒ Boolean
- #resource_name ⇒ Object
- #resource_sym ⇒ Object
- #set_new_or_deleted_before_save ⇒ Object
-
#touch(*attrs) ⇒ Object
Updates each given attribute to the current time.
-
#touch_once(*attrs) ⇒ Object
Updates each given attribute to the current time, skipping attributes that are already set.
- #unsaved_attributes ⇒ Object
Instance Method Details
#adjust(attrs) ⇒ Object
178 179 180 181 |
# File 'lib/hammock/monkey_patches/active_record.rb', line 178 def adjust attrs attrs.each {|k,v| send "#{k}=", v } save false end |
#base_model ⇒ Object
144 145 146 |
# File 'lib/hammock/monkey_patches/active_record.rb', line 144 def base_model self.class.base_model end |
#concise_inspect ⇒ Object
113 114 115 |
# File 'lib/hammock/monkey_patches/active_record.rb', line 113 def concise_inspect "#{self.class}<#{self.to_param || 'new'}>" end |
#description ⇒ Object
140 141 142 |
# File 'lib/hammock/monkey_patches/active_record.rb', line 140 def description new_record? ? "new_#{base_model}" : "#{base_model}_#{id}" end |
#id_str ⇒ Object
132 133 134 135 136 137 138 |
# File 'lib/hammock/monkey_patches/active_record.rb', line 132 def id_str if new_record? "new_#{base_model}" else "#{base_model}_#{id}" end end |
#new_or_deleted_before_save? ⇒ Boolean
148 149 150 |
# File 'lib/hammock/monkey_patches/active_record.rb', line 148 def new_or_deleted_before_save? @new_or_deleted_before_save end |
#offset!(attribute, offset) ⇒ Object
Offset attribute
by offset
atomically in SQL.
191 192 193 194 195 196 197 198 199 200 |
# File 'lib/hammock/monkey_patches/active_record.rb', line 191 def offset! attribute, offset if new_record? log "Can't offset! a new record." else # Update the in-memory model send "#{attribute}=", send(attribute) + offset # Update the DB run_updater_sql 'Offset', "#{connection.quote_column_name(attribute)} = #{connection.quote_column_name(attribute)} + #{quote_value(offset)}" end end |
#record? ⇒ Boolean
129 |
# File 'lib/hammock/monkey_patches/active_record.rb', line 129 def record?; true end |
#resource ⇒ Object
117 118 119 |
# File 'lib/hammock/monkey_patches/active_record.rb', line 117 def resource self.class.resource end |
#resource? ⇒ Boolean
130 |
# File 'lib/hammock/monkey_patches/active_record.rb', line 130 def resource?; false end |
#resource_name ⇒ Object
125 126 127 |
# File 'lib/hammock/monkey_patches/active_record.rb', line 125 def resource_name self.class.resource_name end |
#resource_sym ⇒ Object
121 122 123 |
# File 'lib/hammock/monkey_patches/active_record.rb', line 121 def resource_sym self.class.resource_sym end |
#set_new_or_deleted_before_save ⇒ Object
151 152 153 |
# File 'lib/hammock/monkey_patches/active_record.rb', line 151 def set_new_or_deleted_before_save @new_or_deleted_before_save = new_record? || send_if_respond_to(:deleted?) end |
#touch(*attrs) ⇒ Object
Updates each given attribute to the current time.
Assumes that each column can accept a Time
instance, i.e. that they’re all datetime
columns or similar.
The updates are done with update_attribute, and as such they are done with callbacks but without validation.
161 162 163 164 165 166 |
# File 'lib/hammock/monkey_patches/active_record.rb', line 161 def touch *attrs now = Time.now attrs.each {|attribute| update_attribute attribute, now } end |
#touch_once(*attrs) ⇒ Object
Updates each given attribute to the current time, skipping attributes that are already set.
Assumes that each column can accept a Time
instance, i.e. that they’re all datetime
columns or similar.
The updates are done with update_attribute, and as such they are done with callbacks but without validation.
174 175 176 |
# File 'lib/hammock/monkey_patches/active_record.rb', line 174 def touch_once *attrs touch *attrs.select {|attribute| attributes[attribute.to_s].nil? } end |
#unsaved_attributes ⇒ Object
183 184 185 186 187 188 |
# File 'lib/hammock/monkey_patches/active_record.rb', line 183 def unsaved_attributes self.changed.inject({}) {|hsh,k| hsh[k] = attributes[k] hsh } end |