module ActiveRecord::RelationExtender
Adding functionality to ActiveRecord::Relation
to make
optars method available for all relations, returning array of `OAR`s which we generate
Constants
- DEFAULT_QUERY_OPTIONS
Public Instance Methods
optars(options = {})
click to toggle source
# File lib/opt_ar/core_ext/active_record/relation.rb, line 15 def optars(options = {}) attrs = options[:attrs] || [] validate_columns(attrs) select_attrs = ([primary_key] + attrs).uniq sql_query = except(:select).select(select_attrs).to_sql fetch_objects(sql_query, select_attrs) end
Also aliased as: opt_ar_objects
Private Instance Methods
fetch_objects(query, requested_attributes)
click to toggle source
# File lib/opt_ar/core_ext/active_record/relation.rb, line 27 def fetch_objects(query, requested_attributes) res = fetch_sql_rows(query, DEFAULT_QUERY_OPTIONS) res.map do |row| OptAR::OAR.init_manual(row, klass, requested_attributes) end end
fetch_sql_rows(query, options)
click to toggle source
# File lib/opt_ar/core_ext/active_record/relation.rb, line 34 def fetch_sql_rows(query, options) client = connection.raw_connection connection.send(:log, query, "OptAR - #{klass.name}") do client.query(query, options) end end
validate_columns(attrs)
click to toggle source
# File lib/opt_ar/core_ext/active_record/relation.rb, line 41 def validate_columns(attrs) klass_attrs = klass.column_names.map(&:to_sym) valid = (attrs - klass_attrs).empty? raise OptAR::Errors::UnknownARColumnError unless valid end