class RailsOptimizer::HasOne

Public Class Methods

_define(owner, name ) click to toggle source
# File lib/rails_optimizer/has_one.rb, line 5
def self._define(owner, name )
        owner.__send__(:define_method, name) do |*args|
                return RailsOptimizer::HasOne.new(self, name, *args).get_target
        end
end

Public Instance Methods

get_target() click to toggle source
Calls superclass method RailsOptimizer::Association#get_target
# File lib/rails_optimizer/has_one.rb, line 11
def get_target
        super do
                if args.empty?
                        klass
                else
                        klass.select(*args)
                end.execute(&reflection_scope).execute(&finded)
        end
end

Private Instance Methods

finded() click to toggle source
# File lib/rails_optimizer/has_one.rb, line 23
def finded
        finder = {reflection.foreign_key.to_sym => owner.id}
        proc { send(:find_by, **finder) }
end