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