Class: Version
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Version
- Defined in:
- lib/paper_trail/version.rb
Instance Method Summary collapse
Instance Method Details
#index ⇒ Object
66 67 68 69 |
# File 'lib/paper_trail/version.rb', line 66 def index Version.all(:conditions => ["item_type = ? AND item_id = ?", item_type, item_id], :order => 'id ASC').index(self) end |
#next ⇒ Object
56 57 58 59 |
# File 'lib/paper_trail/version.rb', line 56 def next Version.first :conditions => ["id > ? AND item_type = ? AND item_id = ?", id, item_type, item_id], :order => 'id ASC' end |
#previous ⇒ Object
61 62 63 64 |
# File 'lib/paper_trail/version.rb', line 61 def previous Version.first :conditions => ["id < ? AND item_type = ? AND item_id = ?", id, item_type, item_id], :order => 'id DESC' end |
#reify ⇒ Object
17 18 19 20 21 22 23 24 25 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 51 52 53 54 |
# File 'lib/paper_trail/version.rb', line 17 def reify unless object.nil? # Attributes attrs = YAML::load object # Normally a polymorphic belongs_to relationship allows us # to get the object we belong to by calling, in this case, # +item+. However this returns nil if +item+ has been # destroyed, and we need to be able to retrieve destroyed # objects. # # In this situation we constantize the +item_type+ to get hold of # the class...except when the stored object's attributes # include a +type+ key. If this is the case, the object # we belong to is using single table inheritance and the # +item_type+ will be the base class, not the actual subclass. # If +type+ is present but empty, the class is the base class. if item model = item else class_name = attrs['type'].blank? ? item_type : attrs['type'] klass = class_name.constantize model = klass.new end attrs.each do |k, v| begin model.send "#{k}=", v rescue NoMethodError RAILS_DEFAULT_LOGGER.warn "Attribute #{k} does not exist on #{item_type} (Version id: #{id})." end end model end end |