Module: Ignorable

Defined in:
lib/ignorable.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#ignored_columnsObject (readonly)

Returns the value of attribute ignored_columns.



8
9
10
# File 'lib/ignorable.rb', line 8

def ignored_columns
  @ignored_columns
end

Instance Method Details

#columnsObject



2
3
4
5
6
# File 'lib/ignorable.rb', line 2

def columns
  @columns ||= super.reject do |col|
    self.ignored_column?(col)
  end
end

#ignore_columns(*columns) ⇒ Object Also known as: ignore_column

Prevent Rails from loading a table column. Useful for legacy database schemas with problematic column names, like ‘class’ or ‘attributes’.

class Topic < ActiveRecord::Base
  ignore_columns :attributes, :class
end

Topic.new.respond_to?(:attributes) => false


19
20
21
22
23
24
# File 'lib/ignorable.rb', line 19

def ignore_columns *columns
  @ignored_columns ||= []
  @ignored_columns += columns.map(&:to_s)
  reset_column_information
  @ignored_columns.tap(&:uniq!)
end

#ignored_column?(column) ⇒ Boolean

Has a column been ignored? Accepts both ActiveRecord::ConnectionAdapter::Column objects, and actual column names (‘title’)

Returns:

  • (Boolean)


30
31
32
33
34
# File 'lib/ignorable.rb', line 30

def ignored_column? column
  ignored_columns.present? && ignored_columns.include?(
    column.respond_to?(:name) ? column.name : column.to_s
  )
end

#reset_ignored_columnsObject



36
37
38
39
# File 'lib/ignorable.rb', line 36

def reset_ignored_columns
  @ignored_columns = []
  reset_column_information
end