Sha256: 402eb881189dba3a53bdac147f387e0685314c294cfbd1249a35cc9d0856a668

Contents?: true

Size: 790 Bytes

Versions: 1

Compression:

Stored size: 790 Bytes

Contents

# frozen_string_literal: true

require "active_record"
require_relative "active_record_has/version"
require_relative "active_record_has/reflection_methods"
require_relative "active_record_has/through_methods"

ActiveRecord::Reflection::BelongsToReflection.include ActiveRecordHas::ReflectionMethods
ActiveRecord::Reflection::HasManyReflection.include ActiveRecordHas::ReflectionMethods
ActiveRecord::Reflection::ThroughReflection.include ActiveRecordHas::ThroughMethods

module ActiveRecordHas
  class Error < StandardError; end

  def has(association, &block)
    reflection = reflections[association.to_s]
    raise Error unless reflection

    foreign_scope = reflection.foreign_scope
    foreign_scope = block.call(foreign_scope) if block
    where(foreign_scope.arel.exists)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
active_record_has-0.1.0 lib/active_record_has.rb