Module: Arable

Defined in:
lib/arable.rb,
lib/arable/version.rb

Defined Under Namespace

Modules: ActiveRecordExtension, ClassMethods, Columns Classes: Error

Constant Summary collapse

SKIP_ARABLE_COLUMNS_CLASS_VAR_NAME =
:@@skip_arable_columns
VERSION =
"0.2.0"

Class Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/arable.rb', line 17

def self.included(klass)
  return if klass.class_variable_defined?(SKIP_ARABLE_COLUMNS_CLASS_VAR_NAME)

  column_names = Arable::Columns::Parser.call(klass.table_name).map(&:to_sym)
  illegal_names = column_names & klass.methods

  if illegal_names.any?
    Rails.logger.warn("#{klass} model has illegal column names: #{illegal_names}. Please rename these columns.")
  end

  (column_names - illegal_names).each do |name|
    klass.define_singleton_method(name) do
      klass.arel_table[name]
    end
  end
end

.modelsObject



11
12
13
14
15
# File 'lib/arable.rb', line 11

def self.models
  ApplicationRecord
    .models
    .reject { |model| model.class_variable_defined?(SKIP_ARABLE_COLUMNS_CLASS_VAR_NAME) }
end