aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2017-03-20 00:17:37 +0900
committerRyuta Kamizono <kamipo@gmail.com>2017-03-20 00:18:37 +0900
commit4c1d22183c9ed4dea74ef60a3cca1891fa588b74 (patch)
treec30d8db980bc58afc72fcaf8d4ab4ad56e1e15f2 /activerecord
parentcf4f05a7d4a2051cf3593bc7c3a6a216e74e797a (diff)
downloadrails-4c1d22183c9ed4dea74ef60a3cca1891fa588b74.tar.gz
rails-4c1d22183c9ed4dea74ef60a3cca1891fa588b74.tar.bz2
rails-4c1d22183c9ed4dea74ef60a3cca1891fa588b74.zip
Evaluate the default block only when necessary
Follow up of #28453.
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/associations/belongs_to_association.rb4
-rw-r--r--activerecord/lib/active_record/associations/builder/belongs_to.rb2
2 files changed, 3 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/associations/belongs_to_association.rb b/activerecord/lib/active_record/associations/belongs_to_association.rb
index 4a4f88bb94..a2432e389a 100644
--- a/activerecord/lib/active_record/associations/belongs_to_association.rb
+++ b/activerecord/lib/active_record/associations/belongs_to_association.rb
@@ -21,8 +21,8 @@ module ActiveRecord
self.target = record
end
- def default(record)
- writer(record) if reader.nil?
+ def default(&block)
+ writer(instance_exec(&block)) if reader.nil?
end
def reset
diff --git a/activerecord/lib/active_record/associations/builder/belongs_to.rb b/activerecord/lib/active_record/associations/builder/belongs_to.rb
index 50a1c39ccf..2b9dd8aae8 100644
--- a/activerecord/lib/active_record/associations/builder/belongs_to.rb
+++ b/activerecord/lib/active_record/associations/builder/belongs_to.rb
@@ -121,7 +121,7 @@ module ActiveRecord::Associations::Builder # :nodoc:
def self.add_default_callbacks(model, reflection)
model.before_validation lambda { |o|
- o.association(reflection.name).default o.instance_exec(&reflection.options[:default])
+ o.association(reflection.name).default(&reflection.options[:default])
}
end