module ActiveRecordExtensions::ClassMethods
Public Class Methods
enabled_fields()
click to toggle source
# File lib/rails_core_extensions/active_record_extensions.rb, line 16 def enabled_fields @enabled_fields || @optional_fields_loader.try(:call) end
enabled_fields=(fields)
click to toggle source
# File lib/rails_core_extensions/active_record_extensions.rb, line 20 def enabled_fields=(fields) @enabled_fields = fields end
Public Instance Methods
database(key)
click to toggle source
Like establish_connection but postfixes the key with the rails environment e.g. database(‘hello’) in development will look for the database
which in config/database.yml is called hello_development
# File lib/rails_core_extensions/active_record_extensions.rb, line 8 def database(key) establish_connection("#{key}_#{Rails.env}") end
optional_fields(*possible_fields)
click to toggle source
# File lib/rails_core_extensions/active_record_extensions.rb, line 12 def optional_fields(*possible_fields) @optional_fields_loader = possible_fields.pop if possible_fields.last.is_a?(Proc) class << self def enabled_fields @enabled_fields || @optional_fields_loader.try(:call) end def enabled_fields=(fields) @enabled_fields = fields end end possible_fields.each do |field| instance_eval <<-EVAL def #{field}_enabled? enabled_fields.include?(:#{field}) end EVAL end end
position_helpers_for(*collections)
click to toggle source
# File lib/rails_core_extensions/active_record_extensions.rb, line 34 def position_helpers_for(*collections) collections.each do |collection| class_eval <<-EVAL after_save do |record| record.rebalance_#{collection.to_s.singularize}_positions! end def assign_#{collection.to_s.singularize}_position(object) object.position = (#{collection}.last.try(:position) || 0) + 1 unless object.position end def rebalance_#{collection.to_s.singularize}_positions!(object = nil) reload #{collection}.sort_by(&:position).each_with_index do |o, index| if o.position != (index + 1) o.update_attribute(:position, index + 1) end end end EVAL end end