mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
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:
@@ -40,14 +40,14 @@ module ActiveRecord::Associations::Builder
|
||||
|
||||
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 @@ module ActiveRecord::Associations::Builder
|
||||
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 @@ module ActiveRecord::Associations::Builder
|
||||
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 @@ module ActiveRecord::Associations::Builder
|
||||
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 @@ module ActiveRecord::Associations::Builder
|
||||
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 @@ module ActiveRecord::Associations::Builder
|
||||
|
||||
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 @@ module ActiveRecord::Associations::Builder
|
||||
|
||||
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 @@ module ActiveRecord::Associations::Builder
|
||||
|
||||
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 @@ module ActiveRecord::Associations::Builder
|
||||
|
||||
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 @@ module ActiveRecord::Associations::Builder
|
||||
|
||||
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 @@ module ActiveRecord::Associations::Builder
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user