aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorPratik Naik <pratiknaik@gmail.com>2009-12-28 14:20:54 +0530
committerPratik Naik <pratiknaik@gmail.com>2009-12-28 14:20:54 +0530
commit92c982d973c3e3125982309ff8bb6c22608696c5 (patch)
treeb26e384888d4284550f26420f22640fb616639f1 /activerecord/lib
parent9f4e98330b3a7f85a4bca91fca062106ffbee2bf (diff)
downloadrails-92c982d973c3e3125982309ff8bb6c22608696c5.tar.gz
rails-92c982d973c3e3125982309ff8bb6c22608696c5.tar.bz2
rails-92c982d973c3e3125982309ff8bb6c22608696c5.zip
Relation#readonly(false) should toggle the readonly flag
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/relation.rb13
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)