aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activeresource/lib/active_resource/base.rb21
1 files changed, 15 insertions, 6 deletions
diff --git a/activeresource/lib/active_resource/base.rb b/activeresource/lib/active_resource/base.rb
index 15d77df3b5..ffdb5fb50a 100644
--- a/activeresource/lib/active_resource/base.rb
+++ b/activeresource/lib/active_resource/base.rb
@@ -552,19 +552,20 @@ module ActiveResource
end
def element_name
- model_name.element
+ @element_name ||= model_name.element
end
- def element_name=(value)
- model_name.element = value
+ def element_name=(element_name)
+ @element_name = element_name
+ @collection_name ||= model_name.collection.sub(/[^\/]*$/, @element_name.pluralize)
end
def collection_name
- model_name.collection
+ @collection_name ||= model_name.collection
end
- def collection_name=(value)
- model_name.collection = value
+ def collection_name=(collection_name)
+ @collection_name = collection_name
end
attr_accessor_with_default(:primary_key, 'id') #:nodoc:
@@ -1306,6 +1307,14 @@ module ActiveResource
end
end
+ def to_json(options={})
+ super({ :root => self.class.element_name }.merge(options))
+ end
+
+ def to_xml(options={})
+ super({ :root => self.class.element_name }.merge(options))
+ end
+
protected
def connection(refresh = false)
self.class.connection(refresh)