class ActiveRecord::QueryMethods::WhereChain

Extend WhereChain with 'store' method.

Public Instance Methods

store(store_name, *opts) click to toggle source
# File lib/pgrel/active_record/query_methods.rb, line 13
def store(store_name, *opts)
  store_name = store_name.to_s
  column = @scope.klass.columns_hash[store_name]

  # Rails 4 column has method 'array'
  # but Rails 5 has 'array?'.
  #
  # So, check both(
  if (arr = column.try(:array)) || (arr.nil? && column.array?)
    klass = ArrayChain
  else
    column_klass = column.type.capitalize
    klass = "ActiveRecord::QueryMethods::#{column_klass}Chain".constantize
  end
  chain = klass.new(@scope, store_name)
  return chain.where(*opts) unless opts.empty?
  chain
end