avoid warnings

This change uses Module.redefine_method as defined in ActiveSupport.
Making Module.define_method public would be as clean in the code, and
would also emit warnings when redefining an association. That is pretty
messy given current tests, so I'm leaving it for someone else to decide
what approach is better.
This commit is contained in:
Josh Susser 2011-11-27 14:15:40 -08:00
parent 10834e975a
commit 124c97fbe2
6 changed files with 15 additions and 15 deletions

@ -40,14 +40,14 @@ def define_accessors
def define_readers
name = self.name
mixin.send(:define_method, name) do |*params|
mixin.redefine_method(name) do |*params|
association(name).reader(*params)
end
end
def define_writers
name = self.name
mixin.send(:define_method, "#{name}=") do |value|
mixin.redefine_method("#{name}=") do |value|
association(name).writer(value)
end
end

@ -25,14 +25,14 @@ def add_counter_cache_callbacks(reflection)
name = self.name
method_name = "belongs_to_counter_cache_after_create_for_#{name}"
mixin.send(:define_method, method_name) do
mixin.redefine_method(method_name) do
record = send(name)
record.class.increment_counter(cache_column, record.id) unless record.nil?
end
model.after_create(method_name)
method_name = "belongs_to_counter_cache_before_destroy_for_#{name}"
mixin.send(:define_method, method_name) do
mixin.redefine_method(method_name) do
record = send(name)
record.class.decrement_counter(cache_column, record.id) unless record.nil?
end
@ -48,7 +48,7 @@ def add_touch_callbacks(reflection)
method_name = "belongs_to_touch_after_save_or_destroy_for_#{name}"
touch = options[:touch]
mixin.send(:define_method, method_name) do
mixin.redefine_method(method_name) do
record = send(name)
unless record.nil?

@ -58,7 +58,7 @@ def define_readers
super
name = self.name
mixin.send(:define_method, "#{name.to_s.singularize}_ids") do
mixin.redefine_method("#{name.to_s.singularize}_ids") do
association(name).ids_reader
end
end
@ -67,7 +67,7 @@ def define_writers
super
name = self.name
mixin.send(:define_method, "#{name.to_s.singularize}_ids=") do |ids|
mixin.redefine_method("#{name.to_s.singularize}_ids=") do |ids|
association(name).ids_writer(ids)
end
end

@ -28,7 +28,7 @@ def configure_dependency
def define_destroy_dependency_method
name = self.name
mixin.send(:define_method, dependency_method_name) do
mixin.redefine_method(dependency_method_name) do
send(name).each do |o|
# No point in executing the counter update since we're going to destroy the parent anyway
counter_method = ('belongs_to_counter_cache_before_destroy_for_' + self.class.name.downcase).to_sym
@ -45,7 +45,7 @@ class << o
def define_delete_all_dependency_method
name = self.name
mixin.send(:define_method, dependency_method_name) do
mixin.redefine_method(dependency_method_name) do
send(name).delete_all
end
end
@ -53,7 +53,7 @@ def define_delete_all_dependency_method
def define_restrict_dependency_method
name = self.name
mixin.send(:define_method, dependency_method_name) do
mixin.redefine_method(dependency_method_name) do
raise ActiveRecord::DeleteRestrictionError.new(name) unless send(name).empty?
end
end

@ -45,7 +45,7 @@ def dependency_method_name
def define_destroy_dependency_method
name = self.name
mixin.send(:define_method, dependency_method_name) do
mixin.redefine_method(dependency_method_name) do
association(name).delete
end
end
@ -54,7 +54,7 @@ def define_destroy_dependency_method
def define_restrict_dependency_method
name = self.name
mixin.send(:define_method, dependency_method_name) do
mixin.redefine_method(dependency_method_name) do
raise ActiveRecord::DeleteRestrictionError.new(name) unless send(name).nil?
end
end

@ -16,15 +16,15 @@ def define_accessors
def define_constructors
name = self.name
mixin.send(:define_method, "build_#{name}") do |*params, &block|
mixin.redefine_method("build_#{name}") do |*params, &block|
association(name).build(*params, &block)
end
mixin.send(:define_method, "create_#{name}") do |*params, &block|
mixin.redefine_method("create_#{name}") do |*params, &block|
association(name).create(*params, &block)
end
mixin.send(:define_method, "create_#{name}!") do |*params, &block|
mixin.redefine_method("create_#{name}!") do |*params, &block|
association(name).create!(*params, &block)
end
end