lib/sequel/plugins/association_autoreloading.rb in sequel-3.48.0 vs lib/sequel/plugins/association_autoreloading.rb in sequel-4.0.0

- old
+ new

@@ -1,53 +1,7 @@ module Sequel module Plugins - # The AssociationAutoreloading plugin makes many_to_one association - # accessor methods automatically reload the cached object whenever - # the association's foreign key is modified: - # - # Album.many_to_one :artists - # album = Album.first - # album.artist_id #=> 1 - # album.artist # caches associated artist - # album.artist_id = 2 - # album.artist # reloads associated artist - # + # Empty plugin module for backwards compatibility module AssociationAutoreloading - def self.apply(model) - model.instance_variable_set(:@autoreloading_associations, {}) - end - - module ClassMethods - # Hash with column symbol keys and arrays of many_to_one - # association symbols that should be cleared when the column - # value changes. - attr_reader :autoreloading_associations - - Plugins.inherited_instance_variables(self, :@autoreloading_associations=>:hash_dup) - - private - - # Add the association to the array of associations to clear for - # each of the foreign key columns. - def def_many_to_one(opts) - super - opts[:keys].each do |key| - (@autoreloading_associations[key] ||= []) << opts[:name] - end - end - end - - module InstanceMethods - private - - # If a foreign key column value changes, clear the related - # cached associations. - def change_column_value(column, value) - if assocs = model.autoreloading_associations[column] - assocs.each{|a| associations.delete(a)} - end - super - end - end end end end