Module: Errgonomic::Rails

Defined in:
lib/errgonomic/rails.rb,
lib/errgonomic/rails/active_record_optional.rb,
lib/errgonomic/rails/active_record_delegate_optional.rb,
lib/errgonomic/rails/active_record_optional.rb,
lib/errgonomic/rails/active_record_optional.rb

Overview

Slightly more convenient access to the setup functions: Errgonomic::Rails.setup_before and Errgonomic::Rails.setup_after

Defined Under Namespace

Modules: ActiveRecordDelegateOptional, ActiveRecordOptional, ActiveRecordPredicateBuilder, ActiveRecordQuoting

Class Method Summary collapse

Class Method Details

.setup_afterObject

Models opt in to ActiveRecordOptional individually via include Errgonomic::Rails::ActiveRecordOptional.



22
# File 'lib/errgonomic/rails.rb', line 22

def self.setup_after; end

.setup_beforeObject

We provide helper class methods, like delegate_optional, which need to be included into ActiveRecord::Base before any models are evaluated.



16
17
18
# File 'lib/errgonomic/rails.rb', line 16

def self.setup_before
  ActiveRecord::Base.include(Errgonomic::Rails::ActiveRecordDelegateOptional)
end

.unwrap_options(value) ⇒ Object

Unwrap Options in a query condition, reaching one level into an array so a list of Options binds like a list of values.



304
305
306
307
308
309
310
311
312
313
# File 'lib/errgonomic/rails/active_record_optional.rb', line 304

def self.unwrap_options(value)
  case value
  when Errgonomic::Option::Any
    value.unwrap_or(nil)
  when Array
    value.any? { |v| v.is_a?(Errgonomic::Option::Any) } ? value.map { |v| unwrap_options(v) } : value
  else
    value
  end
end