module Ignorable::ClassMethods

Public Instance Methods

ignore_column(*columns)
Alias for: ignore_columns
ignore_columns(*columns) click to toggle source

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
# File lib/ignorable.rb, line 29
def ignore_columns(*columns)
  self.ignored_columns ||= []
  self.ignored_columns += columns.map(&:to_s)
  reset_column_information
  descendants.each(&:reset_column_information)
  self.ignored_columns.tap(&:uniq!)
end
Also aliased as: ignore_column
ignored_column?(column) click to toggle source

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

# File lib/ignorable.rb, line 41
def ignored_column?(column)
  self.ignored_columns.present? && self.ignored_columns.include?(
    column.respond_to?(:name) ? column.name : column.to_s
  )
end
reset_ignored_columns() click to toggle source
# File lib/ignorable.rb, line 47
def reset_ignored_columns
  self.ignored_columns = []
  reset_column_information
end