Class: RailsAdmin::History
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- RailsAdmin::History
- Defined in:
- lib/rails_admin/extensions/history/history.rb
Constant Summary collapse
- IGNORED_ATTRS =
Set[:id, :created_at, :created_on, :deleted_at, :updated_at, :updated_on, :deleted_on]
Class Method Summary collapse
- .create_history_item(message, object, abstract_model, user) ⇒ Object
- .create_update_history(model, object, associations_before, associations_after, modified_associations, old_object, user) ⇒ Object
- .history_for_model(model, query, sort, sort_reverse, all, page, per_page = (RailsAdmin::Config.default_items_per_page || 20)) ⇒ Object
- .history_for_object(model, object, query, sort, sort_reverse, all, page, per_page = (RailsAdmin::Config.default_items_per_page || 20)) ⇒ Object
- .latest ⇒ Object
Class Method Details
.create_history_item(message, object, abstract_model, user) ⇒ Object
39 40 41 42 43 44 45 46 |
# File 'lib/rails_admin/extensions/history/history.rb', line 39 def self.create_history_item(, object, abstract_model, user) create( :message => [].flatten.join(', '), :item => object.id, :table => abstract_model.pretty_name, :username => user.try(:email) ) end |
.create_update_history(model, object, associations_before, associations_after, modified_associations, old_object, user) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/rails_admin/extensions/history/history.rb', line 11 def self.create_update_history(model, object, associations_before, associations_after, modified_associations, old_object, user) = [] changed_property_list = [] properties = model.properties.reject{|p| IGNORED_ATTRS.include?(p[:name])} properties.each do |p| property_name = p[:name].to_param changed_property_list << property_name if old_object.safe_send(property_name) != object.safe_send(property_name) end model.associations.each do |t| assoc = changed_property_list.index(t[:foreign_key].to_param) changed_property_list[assoc] = "associated #{t[:pretty_name]}" if assoc end associations_after.each do |key, current| removed_ids = (associations_before[key] - current).map{|m| '#' + m.to_s} added_ids = (current - associations_before[key]).map{|m| '#' + m.to_s} << "Removed #{key.to_s.capitalize} #{removed_ids.join(', ')} associations" if removed_ids.any? << "Added #{key.to_s.capitalize} #{added_ids.join(', ')} associations" if added_ids.any? end modified_associations.uniq.each { |t| changed_property_list << "associated #{t}" } << "Changed #{changed_property_list.join(", ")}" unless changed_property_list.empty? create_history_item(, object, model, user) unless .empty? end |
.history_for_model(model, query, sort, sort_reverse, all, page, per_page = (RailsAdmin::Config.default_items_per_page || 20)) ⇒ Object
48 49 50 51 52 53 54 55 56 57 |
# File 'lib/rails_admin/extensions/history/history.rb', line 48 def self.history_for_model(model, query, sort, sort_reverse, all, page, per_page = (RailsAdmin::Config.default_items_per_page || 20)) history = where(:table => model.pretty_name) history = history.where("message LIKE ? OR username LIKE ?", "%#{query}%", "%#{query}%") if query if sort history = history.order(sort_reverse == "true" ? "#{sort} DESC" : sort) else history = history.order('created_at DESC') end all ? history : history.page(page.presence || "1").per(per_page) end |
.history_for_object(model, object, query, sort, sort_reverse, all, page, per_page = (RailsAdmin::Config.default_items_per_page || 20)) ⇒ Object
59 60 61 62 63 64 65 66 67 68 |
# File 'lib/rails_admin/extensions/history/history.rb', line 59 def self.history_for_object(model, object, query, sort, sort_reverse, all, page, per_page = (RailsAdmin::Config.default_items_per_page || 20)) history = where(:table => model.pretty_name, :item => object.id) history = history.where("message LIKE ? OR username LIKE ?", "%#{query}%", "%#{query}%") if query if sort history = history.order(sort_reverse == "true" ? "#{sort} DESC" : sort) else history = history.order('created_at DESC') end all ? history : history.page(page.presence || "1").per(per_page) end |
.latest ⇒ Object
7 8 9 |
# File 'lib/rails_admin/extensions/history/history.rb', line 7 def self.latest self.limit(100) end |