diff options
author | Pratik Naik <pratiknaik@gmail.com> | 2009-12-26 14:26:02 +0530 |
---|---|---|
committer | Pratik Naik <pratiknaik@gmail.com> | 2009-12-26 14:26:02 +0530 |
commit | 284d186cf4e055cefb2f8482d016e3bd09e9c341 (patch) | |
tree | e21bdcc66b1c7d563dbe9d41b8feec6e6300bede /activerecord/lib/active_record/relation.rb | |
parent | 187fbe5cbadf9d6fe5009a4a436fac28bcf8c99c (diff) | |
download | rails-284d186cf4e055cefb2f8482d016e3bd09e9c341.tar.gz rails-284d186cf4e055cefb2f8482d016e3bd09e9c341.tar.bz2 rails-284d186cf4e055cefb2f8482d016e3bd09e9c341.zip |
Make sure the relations are always immutable
Diffstat (limited to 'activerecord/lib/active_record/relation.rb')
-rw-r--r-- | activerecord/lib/active_record/relation.rb | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb index 40ccdd4696..3dedf44190 100644 --- a/activerecord/lib/active_record/relation.rb +++ b/activerecord/lib/active_record/relation.rb @@ -12,18 +12,15 @@ module ActiveRecord end def preload(associations) - @associations_to_preload << associations - self + create_new_relation(@relation, @readonly, @associations_to_preload + Array.wrap(associations)) end def eager_load(associations) - @eager_load_associations += Array.wrap(associations) - self + create_new_relation(@relation, @readonly, @associations_to_preload, @eager_load_associations + Array.wrap(associations)) end def readonly - @readonly = true - self + create_new_relation(@relation, true) end def to_a @@ -124,8 +121,8 @@ module ActiveRecord end end - def create_new_relation(relation) - Relation.new(@klass, relation, @readonly, @associations_to_preload, @eager_load_associations) + def create_new_relation(relation, readonly = @readonly, preload = @associations_to_preload, eager_load = @eager_load_associations) + Relation.new(@klass, relation, readonly, preload, eager_load) end end |