Merge pull request #1982 from bf4/better_ams_model_interface

Better AMS Model attributes interface
This commit is contained in:
Benjamin Fleischer 2016-11-21 09:18:38 -06:00 committed by GitHub
commit 93bbc59e14
12 changed files with 21 additions and 15 deletions

View File

@ -6,6 +6,8 @@ Breaking changes:
Features:
- [#1982](https://github.com/rails-api/active_model_serializers/pull/1982) Add ActiveModelSerializers::Model.attributes to configure PORO attributes (@bf4).
Fixes:
Misc:

View File

@ -110,7 +110,7 @@ class SomeResource < ActiveRecord::Base
end
# or
class SomeResource < ActiveModelSerializers::Model
attr_accessor :title, :body
attributes :title, :body
end
```

View File

@ -105,7 +105,7 @@ ActiveModelSerializers::Model may be used either as a template, or in production
```ruby
class MyModel < ActiveModelSerializers::Model
attr_accessor :id, :name, :level
attributes :id, :name, :level
end
```

View File

@ -25,7 +25,7 @@ Fortunately, ActiveModelSerializers provides a [`ActiveModelSerializers::Model`]
```ruby
# my_model.rb
class MyModel < ActiveModelSerializers::Model
attr_accessor :id, :name, :level
attributes :id, :name, :level
end
```

View File

@ -6,6 +6,10 @@ module ActiveModelSerializers
include ActiveModel::Model
include ActiveModel::Serializers::JSON
def self.attributes(*names)
attr_accessor(*names)
end
attr_reader :attributes, :errors
def initialize(attributes = {})

View File

@ -2,16 +2,16 @@ require 'test_helper'
module SerializationScopeTesting
class User < ActiveModelSerializers::Model
attr_accessor :id, :name, :admin
attributes :id, :name, :admin
def admin?
admin
end
end
class Comment < ActiveModelSerializers::Model
attr_accessor :id, :body
attributes :id, :body
end
class Post < ActiveModelSerializers::Model
attr_accessor :id, :title, :body, :comments
attributes :id, :title, :body, :comments
end
class PostSerializer < ActiveModel::Serializer
attributes :id, :title, :body, :comments

View File

@ -10,7 +10,7 @@ module ActiveModelSerializers
def test_initialization_with_string_keys
klass = Class.new(ActiveModelSerializers::Model) do
attr_accessor :key
attributes :key
end
value = 'value'

View File

@ -384,7 +384,7 @@ module ActiveModelSerializers
def new_model(model_attributes)
Class.new(ActiveModelSerializers::Model) do
attr_accessor(*model_attributes.keys)
attributes(*model_attributes.keys)
def self.name
'TestModel'

View File

@ -244,7 +244,7 @@ module ActiveModelSerializers
# rubocop:disable Metrics/AbcSize
def test_a_serializer_rendered_by_two_adapter_returns_differently_fetch_attributes
Object.const_set(:Alert, Class.new(ActiveModelSerializers::Model) do
attr_accessor :id, :status, :resource, :started_at, :ended_at, :updated_at, :created_at
attributes :id, :status, :resource, :started_at, :ended_at, :updated_at, :created_at
end)
Object.const_set(:UncachedAlertSerializer, Class.new(ActiveModel::Serializer) do
attributes :id, :status, :resource, :started_at, :ended_at, :updated_at, :created_at

View File

@ -31,7 +31,7 @@ end
# model.validate! # => ["cannot be nil"]
# model.errors.full_messages # => ["name cannot be nil"]
class ModelWithErrors < ::ActiveModelSerializers::Model
attr_accessor :name
attributes :name
end
class Profile < Model

View File

@ -5,10 +5,10 @@ module ActiveModel
class ReadAttributeForSerializationTest < ActiveSupport::TestCase
# https://github.com/rails-api/active_model_serializers/issues/1653
class Parent < ActiveModelSerializers::Model
attr_accessor :id
attributes :id
end
class Child < Parent
attr_accessor :name
attributes :name
end
class ParentSerializer < ActiveModel::Serializer
attributes :$id
@ -30,7 +30,7 @@ module ActiveModel
# https://github.com/rails-api/active_model_serializers/issues/1658
class ErrorResponse < ActiveModelSerializers::Model
attr_accessor :error
attributes :error
end
class ApplicationSerializer < ActiveModel::Serializer
attributes :status

View File

@ -2,10 +2,10 @@ module ActiveModel
class Serializer
class SerializationTest < ActiveSupport::TestCase
class Blog < ActiveModelSerializers::Model
attr_accessor :id, :name, :authors
attributes :id, :name, :authors
end
class Author < ActiveModelSerializers::Model
attr_accessor :id, :name
attributes :id, :name
end
class BlogSerializer < ActiveModel::Serializer
attributes :id