Sha256: 47a6d837be82dcc2234eb166e88716ff405d4ca4d642b1e23441b737e3f6c9f9

Contents?: true

Size: 1.83 KB

Versions: 16

Compression:

Stored size: 1.83 KB

Contents

module RailsAdmin
  class History < ActiveRecord::Base
    self.table_name = :rails_admin_histories

    IGNORED_ATTRS = Set[:id, :created_at, :created_on, :deleted_at, :updated_at, :updated_on, :deleted_on]

    if defined?(ActiveModel::MassAssignmentSecurity) && ancestors.include?(ActiveModel::MassAssignmentSecurity)
      attr_accessible :message, :item, :table, :username
    end

    default_scope { order('id DESC') }

    class << self
      def latest(count = 100)
        limit(count)
      end

      def create_history_item(message, object, abstract_model, user)
        create(message: [message].flatten.join(', '),
               item: object.id,
               table: abstract_model.to_s,
               username: user.try(:email))
      end

      def history_for_model(abstract_model, query, sort, sort_reverse, all, page, per_page = (RailsAdmin::Config.default_items_per_page || 20))
        history = where(table: abstract_model.to_s)
        history_for_model_or_object(history, abstract_model, query, sort, sort_reverse, all, page, per_page)
      end

      def history_for_object(abstract_model, object, query, sort, sort_reverse, all, page, per_page = (RailsAdmin::Config.default_items_per_page || 20))
        history = where(table: abstract_model.to_s, item: object.id)
        history_for_model_or_object(history, abstract_model, query, sort, sort_reverse, all, page, per_page)
      end

    protected

      def history_for_model_or_object(history, _abstract_model, query, sort, sort_reverse, all, page, per_page)
        history = history.where('message LIKE ? OR username LIKE ?', "%#{query}%", "%#{query}%") if query
        history = history.order(sort_reverse == 'true' ? "#{sort} DESC" : sort) if sort
        all ? history : history.send(Kaminari.config.page_method_name, page.presence || '1').per(per_page)
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
rails_admin-2.3.1 lib/rails_admin/extensions/history/history.rb
rails_admin-2.3.0 lib/rails_admin/extensions/history/history.rb
rails_admin-2.2.1 lib/rails_admin/extensions/history/history.rb
rails_admin-2.2.0 lib/rails_admin/extensions/history/history.rb
rails_admin-2.1.1 lib/rails_admin/extensions/history/history.rb
rails_admin-2.1.0 lib/rails_admin/extensions/history/history.rb
rails_admin-2.0.2 lib/rails_admin/extensions/history/history.rb
rails_admin-1.4.3 lib/rails_admin/extensions/history/history.rb
rails_admin-2.0.1 lib/rails_admin/extensions/history/history.rb
rails_admin-2.0.0 lib/rails_admin/extensions/history/history.rb
rails_admin-2.0.0.rc lib/rails_admin/extensions/history/history.rb
rails_admin-2.0.0.beta lib/rails_admin/extensions/history/history.rb
rails_admin-1.4.2 lib/rails_admin/extensions/history/history.rb
rails_admin-1.4.1 lib/rails_admin/extensions/history/history.rb
rails_admin-1.4.0 lib/rails_admin/extensions/history/history.rb
rails_admin-1.3.0 lib/rails_admin/extensions/history/history.rb