aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHrvoje Šimić <shime.ferovac@gmail.com>2012-07-14 15:21:30 +0200
committerCarlos Antonio da Silva <carlosantoniodasilva@gmail.com>2012-08-01 11:33:12 -0300
commit08a6b5753ed65244c793bab455c26454ab1a1dc5 (patch)
tree0f64c7847ec5d07ee3f915aa6d2e02b56c837c1f
parentc10202208982bfa02ffd16d1614992228391d781 (diff)
downloadrails-08a6b5753ed65244c793bab455c26454ab1a1dc5.tar.gz
rails-08a6b5753ed65244c793bab455c26454ab1a1dc5.tar.bz2
rails-08a6b5753ed65244c793bab455c26454ab1a1dc5.zip
move method for dependent option check
-rw-r--r--activerecord/lib/active_record/associations/builder/association.rb13
-rw-r--r--activerecord/lib/active_record/associations/builder/belongs_to.rb6
-rw-r--r--activerecord/lib/active_record/associations/builder/has_many.rb7
-rw-r--r--activerecord/lib/active_record/associations/builder/has_one.rb7
4 files changed, 22 insertions, 11 deletions
diff --git a/activerecord/lib/active_record/associations/builder/association.rb b/activerecord/lib/active_record/associations/builder/association.rb
index f45ab1aff4..4086485ee2 100644
--- a/activerecord/lib/active_record/associations/builder/association.rb
+++ b/activerecord/lib/active_record/associations/builder/association.rb
@@ -77,6 +77,19 @@ module ActiveRecord::Associations::Builder
end
end
+ def print_valid_dependent_options(options)
+ options.map {|s| s.to_s.insert 0, ":" }.
+ to_sentence(:words_connector => ", ",
+ :two_words_connector => ' or ',
+ :last_word_connector => ' or ')
+ end
+
+ def check_dependent_valid(valid_options)
+ return if valid_options.include?(options[:dependent])
+ raise ArgumentError, "The :dependent option expects either " \
+ "#{print_valid_dependent_options(valid_options)} (#{options[:dependent].inspect})"
+ end
+
def dependent_restrict_raises?
ActiveRecord::Base.dependent_restrict_raises == true
end
diff --git a/activerecord/lib/active_record/associations/builder/belongs_to.rb b/activerecord/lib/active_record/associations/builder/belongs_to.rb
index 4bef996297..277bec6f72 100644
--- a/activerecord/lib/active_record/associations/builder/belongs_to.rb
+++ b/activerecord/lib/active_record/associations/builder/belongs_to.rb
@@ -73,9 +73,8 @@ module ActiveRecord::Associations::Builder
def configure_dependency
if options[:dependent]
- unless options[:dependent].in?([:destroy, :delete])
- raise ArgumentError, "The :dependent option expects either :destroy or :delete (#{options[:dependent].inspect})"
- end
+
+ check_dependent_valid [:destroy, :delete]
method_name = "belongs_to_dependent_#{options[:dependent]}_for_#{name}"
model.send(:class_eval, <<-eoruby, __FILE__, __LINE__ + 1)
@@ -85,6 +84,7 @@ module ActiveRecord::Associations::Builder
end
eoruby
model.after_destroy method_name
+
end
end
end
diff --git a/activerecord/lib/active_record/associations/builder/has_many.rb b/activerecord/lib/active_record/associations/builder/has_many.rb
index 81df1fb135..6920bf0633 100644
--- a/activerecord/lib/active_record/associations/builder/has_many.rb
+++ b/activerecord/lib/active_record/associations/builder/has_many.rb
@@ -20,14 +20,13 @@ module ActiveRecord::Associations::Builder
def configure_dependency
if options[:dependent]
- unless options[:dependent].in?([:destroy, :delete_all, :nullify, :restrict])
- raise ArgumentError, "The :dependent option expects either :destroy, :delete_all, " \
- ":nullify or :restrict (#{options[:dependent].inspect})"
- end
+
+ check_dependent_valid [:destroy, :delete_all, :nullify, :restrict]
dependent_restrict_deprecation_warning if options[:dependent] == :restrict
send("define_#{options[:dependent]}_dependency_method")
model.before_destroy dependency_method_name
+
end
end
diff --git a/activerecord/lib/active_record/associations/builder/has_one.rb b/activerecord/lib/active_record/associations/builder/has_one.rb
index cdb45e8e58..442fd50b1d 100644
--- a/activerecord/lib/active_record/associations/builder/has_one.rb
+++ b/activerecord/lib/active_record/associations/builder/has_one.rb
@@ -26,14 +26,13 @@ module ActiveRecord::Associations::Builder
def configure_dependency
if options[:dependent]
- unless options[:dependent].in?([:destroy, :delete, :nullify, :restrict])
- raise ArgumentError, "The :dependent option expects either :destroy, :delete, " \
- ":nullify or :restrict (#{options[:dependent].inspect})"
- end
+
+ check_dependent_valid [:destroy, :delete, :nullify, :restrict]
dependent_restrict_deprecation_warning if options[:dependent] == :restrict
send("define_#{options[:dependent]}_dependency_method")
model.before_destroy dependency_method_name
+
end
end