class Sequel::Plugins::AssociationProxies::AssociationProxy
A proxy for the association. Calling an array method will load the associated objects and call the method on the associated object array. Calling any other method will call that method on the association’s dataset.
Constants
- DEFAULT_PROXY_TO_DATASET
-
Default proc used to determine whether to send the method to the dataset. If the array would respond to it, sends it to the array instead of the dataset.
Public Class Methods
Source
# File lib/sequel/plugins/association_proxies.rb 85 def initialize(instance, reflection, proxy_argument, &proxy_block) 86 @instance = instance 87 @reflection = reflection 88 @proxy_argument = proxy_argument 89 @proxy_block = proxy_block 90 end
Set the association reflection to use, and whether the association should be reloaded if an array method is called.
Public Instance Methods
Source
# File lib/sequel/plugins/association_proxies.rb 94 def method_missing(meth, *args, &block) 95 v = if @instance.model.association_proxy_to_dataset.call(:method=>meth, :arguments=>args, :block=>block, :instance=>@instance, :reflection=>@reflection, :proxy_argument=>@proxy_argument, :proxy_block=>@proxy_block) 96 @instance.public_send(@reflection[:dataset_method]) 97 else 98 @instance.send(:load_associated_objects, @reflection, @proxy_argument, &@proxy_block) 99 end 100 v.public_send(meth, *args, &block) 101 end
Call the method given on the array of associated objects if the method is an array method, otherwise call the method on the association’s dataset.