Sha256: 54595fbc2d1e3361e8bb8d98aa60c18b4700e309aaab3cd717936f6bd3cb56ca

Contents?: true

Size: 656 Bytes

Versions: 1

Compression:

Stored size: 656 Bytes

Contents

require "deep_pluck/version"
require 'deep_pluck/model'
require 'active_record'
require 'pluck_all'

class ActiveRecord::Relation
  def deep_pluck(*args)
    DeepPluck::Model.new(self).add(args).load_all
  end
end

class ActiveRecord::Base
  def self.deep_pluck(*args)
    self.where('').deep_pluck(*args)
  end

  def deep_pluck(*args)
    hash_args = args.select{|s| s.is_a?(Hash) }
    other_args = args.select{|s| !s.is_a?(Hash) }
    preloaded_model = DeepPluck::PreloadedModel.new(self, other_args)
    model = DeepPluck::Model.new(self.class.where(id: id), preloaded_model: preloaded_model)
    return model.add(*hash_args).load_all.first
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
deep_pluck-1.1.0 lib/deep_pluck.rb