module UnscopedAssociations::ClassMethods
Public Instance Methods
belongs_to_with_unscoped(name, scope = nil, options = {})
click to toggle source
# File lib/unscoped_associations.rb, line 14 def belongs_to_with_unscoped(name, scope = nil, options = {}) build_unscoped(:belongs_to, name, scope, options) end
has_many_with_unscoped(name, scope = nil, options = {}, &extension)
click to toggle source
# File lib/unscoped_associations.rb, line 18 def has_many_with_unscoped(name, scope = nil, options = {}, &extension) build_unscoped(:has_many, name, scope, options, &extension) end
has_one_with_unscoped(name, scope = nil, options = {})
click to toggle source
# File lib/unscoped_associations.rb, line 22 def has_one_with_unscoped(name, scope = nil, options = {}) build_unscoped(:has_one, name, scope, options) end
Private Instance Methods
add_unscoped_association(association_name)
click to toggle source
Calls superclass method
# File lib/unscoped_associations.rb, line 45 def add_unscoped_association(association_name) define_method(association_name) do |*args| force_reload = args[0] if !force_reload && instance_variable_get("@_cache_#{association_name}") instance_variable_get("@_cache_#{association_name}") else instance_variable_set("@_cache_#{association_name}", association(association_name).klass.unscoped { super(true) } ) end end end
build_unscoped(assoc_type, assoc_name, scope = nil, options = {}, &extension)
click to toggle source
# File lib/unscoped_associations.rb, line 28 def build_unscoped(assoc_type, assoc_name, scope = nil, options = {}, &extension) if scope.is_a?(Hash) options = scope scope = nil end if options.delete(:unscoped) add_unscoped_association(assoc_name) end if scope send("#{assoc_type}_without_unscoped", assoc_name, scope, options, &extension) else send("#{assoc_type}_without_unscoped", assoc_name, options, &extension) end end