diff options
author | Pratik Naik <pratiknaik@gmail.com> | 2009-12-28 14:20:54 +0530 |
---|---|---|
committer | Pratik Naik <pratiknaik@gmail.com> | 2009-12-28 14:20:54 +0530 |
commit | 92c982d973c3e3125982309ff8bb6c22608696c5 (patch) | |
tree | b26e384888d4284550f26420f22640fb616639f1 /activerecord/lib/active_record | |
parent | 9f4e98330b3a7f85a4bca91fca062106ffbee2bf (diff) | |
download | rails-92c982d973c3e3125982309ff8bb6c22608696c5.tar.gz rails-92c982d973c3e3125982309ff8bb6c22608696c5.tar.bz2 rails-92c982d973c3e3125982309ff8bb6c22608696c5.zip |
Relation#readonly(false) should toggle the readonly flag
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r-- | activerecord/lib/active_record/relation.rb | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb index a7f62abe1d..ff10df96f2 100644 --- a/activerecord/lib/active_record/relation.rb +++ b/activerecord/lib/active_record/relation.rb @@ -35,12 +35,17 @@ module ActiveRecord create_new_relation(@relation, @readonly, @associations_to_preload, @eager_load_associations + Array.wrap(associations)) end - def readonly - create_new_relation(@relation, true) + def readonly(status = true) + status.nil? ? create_new_relation : create_new_relation(@relation, status) end def select(selects) - selects.present? ? create_new_relation(@relation.project(selects)) : create_new_relation + if selects.present? + frozen = @relation.joins(relation).present? ? false : @readonly + create_new_relation(@relation.project(selects), frozen) + else + create_new_relation + end end def from(from) @@ -106,7 +111,7 @@ module ActiveRecord @relation.join(join, join_type) end - create_new_relation(join_relation) + create_new_relation(join_relation, true) end def where(*args) |