mirror of https://github.com/rails/rails
Fixing `as_json` method for ActiveRecord models.
When you've got an AR Model and you override the `as_json` method, you should be able to add default options to the renderer, like this: class User < ActiveRecord::Base def as_json(options = {}) super(options.merge(:except => [:password_digest])) end end This was not possible before this commit. See the added test case.
This commit is contained in:
parent
d2888de598
commit
da914fa35c
|
@ -206,4 +206,14 @@ class JsonSerializationTest < ActiveModel::TestCase
|
|||
assert_no_match %r{"preferences":}, json
|
||||
end
|
||||
|
||||
test "custom as_json options should be extendible" do
|
||||
def @contact.as_json(options = {}); super(options.merge(:only => [:name])); end
|
||||
json = @contact.to_json
|
||||
|
||||
assert_match %r{"name":"Konata Izumi"}, json
|
||||
assert_no_match %r{"created_at":#{ActiveSupport::JSON.encode(Time.utc(2006, 8, 1))}}, json
|
||||
assert_no_match %r{"awesome":}, json
|
||||
assert_no_match %r{"preferences":}, json
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -12,7 +12,7 @@ end
|
|||
[Object, Array, FalseClass, Float, Hash, Integer, NilClass, String, TrueClass].each do |klass|
|
||||
klass.class_eval <<-RUBY, __FILE__, __LINE__
|
||||
# Dumps object in JSON (JavaScript Object Notation). See www.json.org for more info.
|
||||
def to_json(options = nil)
|
||||
def to_json(options = {})
|
||||
ActiveSupport::JSON.encode(self, options)
|
||||
end
|
||||
RUBY
|
||||
|
|
Loading…
Reference in New Issue