Module: ActiveRecordLazyColumns::ModelExtension

Defined in:
lib/activerecord_lazy_columns.rb

Overview

Extension for Active Record to add ‘lazy_columns` method with an ability to lazily load specific columns.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#lazy_loaded_columnsObject



14
15
16
# File 'lib/activerecord_lazy_columns.rb', line 14

def lazy_loaded_columns
  @lazy_loaded_columns || []
end

Instance Method Details

#lazy_columns(*columns) ⇒ Object

Declare some columns to be loaded lazily.

Examples:

class Action < ApplicationRecord
  lazy_columns :comments
end


25
26
27
28
29
30
31
# File 'lib/activerecord_lazy_columns.rb', line 25

def lazy_columns(*columns)
  columns = columns.map(&:to_s)
  self.lazy_loaded_columns = columns

  default_scope { select(column_names - columns) }
  columns.each { |column| define_lazy_reader_for(column) }
end