Sha256: 48cb409ac813fb565450965d2a1553475c1a2df1c98646cfac5daa037a0cd1a7
Contents?: true
Size: 1.24 KB
Versions: 2
Compression:
Stored size: 1.24 KB
Contents
require "much-plugin" module Ardb module DefaultOrderBy include MuchPlugin DEFAULT_ATTRIBUTE = :order_by DEFAULT_SCOPE_PROC = proc{ self.class.scoped } plugin_included do @ardb_default_order_by_config = {} end plugin_class_methods do def default_order_by(options = nil) options ||= {} @ardb_default_order_by_config.merge!({ :attribute => options[:attribute] || DEFAULT_ATTRIBUTE, :scope_proc => options[:scope] || DEFAULT_SCOPE_PROC }) before_validation :ardb_default_order_by, :on => :create end def ardb_default_order_by_config @ardb_default_order_by_config end end plugin_instance_methods do private def reset_order_by attr_name = self.class.ardb_default_order_by_config[:attribute] scope_proc = self.class.ardb_default_order_by_config[:scope_proc] current_max = self.instance_eval(&scope_proc).maximum(attr_name) || 0 self.send("#{attr_name}=", current_max + 1) end def ardb_default_order_by attr_name = self.class.ardb_default_order_by_config[:attribute] reset_order_by if self.send(attr_name).to_s.empty? true end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ardb-0.29.1 | lib/ardb/default_order_by.rb |
ardb-0.29.0 | lib/ardb/default_order_by.rb |