mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-22 22:06:50 +00:00
Merge pull request #1982 from bf4/better_ams_model_interface
Better AMS Model attributes interface
This commit is contained in:
commit
93bbc59e14
@ -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:
|
||||
|
||||
@ -110,7 +110,7 @@ class SomeResource < ActiveRecord::Base
|
||||
end
|
||||
# or
|
||||
class SomeResource < ActiveModelSerializers::Model
|
||||
attr_accessor :title, :body
|
||||
attributes :title, :body
|
||||
end
|
||||
```
|
||||
|
||||
|
||||
@ -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
|
||||
```
|
||||
|
||||
|
||||
@ -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
|
||||
```
|
||||
|
||||
|
||||
@ -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 = {})
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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'
|
||||
|
||||
|
||||
@ -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'
|
||||
|
||||
@ -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
|
||||
|
||||
2
test/fixtures/poro.rb
vendored
2
test/fixtures/poro.rb
vendored
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user