aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
authorYves Senn <yves.senn@gmail.com>2014-06-22 14:48:28 +0200
committerYves Senn <yves.senn@gmail.com>2014-06-25 13:46:54 +0200
commit5706d290b0a2501a713fadfb76d9e45c24d26e6a (patch)
tree34123891c234cf54329f11d0e5a2e57626b801d8 /activerecord/lib/active_record
parent48933542ab4b83bab9ae5422bd95fd78abee79fa (diff)
downloadrails-5706d290b0a2501a713fadfb76d9e45c24d26e6a.tar.gz
rails-5706d290b0a2501a713fadfb76d9e45c24d26e6a.tar.bz2
rails-5706d290b0a2501a713fadfb76d9e45c24d26e6a.zip
`preload` preserves readonly flag on associations. #15853
This is a partial fix for #15853. It only works when a `preload` is issued and not an `eager_load`. I've added a skipped failing test-case to keep in mind that we need to deal with `eager_load`.
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r--activerecord/lib/active_record/associations/preloader/association.rb4
1 files changed, 4 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/associations/preloader/association.rb b/activerecord/lib/active_record/associations/preloader/association.rb
index 441768f302..c0639742be 100644
--- a/activerecord/lib/active_record/associations/preloader/association.rb
+++ b/activerecord/lib/active_record/associations/preloader/association.rb
@@ -151,6 +151,10 @@ module ActiveRecord
end
end
+ if preload_values[:readonly] || values[:readonly]
+ scope.readonly!
+ end
+
if options[:as]
scope.where!(klass.table_name => { reflection.type => model.base_class.sti_name })
end