mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-24 14:56:50 +00:00
edits and rearranging logic
This commit is contained in:
parent
da55cd181c
commit
32c6bccec7
@ -16,7 +16,6 @@ This is the documentation of ActiveModelSerializers, it's focused on the **0.10.
|
|||||||
- [Instrumentation](general/instrumentation.md)
|
- [Instrumentation](general/instrumentation.md)
|
||||||
- [JSON API Schema](jsonapi/schema.md)
|
- [JSON API Schema](jsonapi/schema.md)
|
||||||
- [ARCHITECTURE](ARCHITECTURE.md)
|
- [ARCHITECTURE](ARCHITECTURE.md)
|
||||||
- [Passing Arbitrary Options](general/passing_arbitrary_options.md)
|
|
||||||
|
|
||||||
## How to
|
## How to
|
||||||
|
|
||||||
@ -24,6 +23,7 @@ This is the documentation of ActiveModelSerializers, it's focused on the **0.10.
|
|||||||
- [How to add pagination links](howto/add_pagination_links.md)
|
- [How to add pagination links](howto/add_pagination_links.md)
|
||||||
- [Using ActiveModelSerializers Outside Of Controllers](howto/outside_controller_use.md)
|
- [Using ActiveModelSerializers Outside Of Controllers](howto/outside_controller_use.md)
|
||||||
- [Testing ActiveModelSerializers](howto/test.md)
|
- [Testing ActiveModelSerializers](howto/test.md)
|
||||||
|
- [Passing Arbitrary Options](how-to/passing_arbitrary_options.md)
|
||||||
|
|
||||||
## Integrations
|
## Integrations
|
||||||
|
|
||||||
|
|||||||
@ -1,45 +0,0 @@
|
|||||||
[Back to Guides](../README.md)
|
|
||||||
|
|
||||||
# Passing Arbitrary Options To A Serializer
|
|
||||||
|
|
||||||
Let's say you have a basic Post Controller:
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
class PostController < ApplicationController
|
|
||||||
def dashboard
|
|
||||||
render json: @posts
|
|
||||||
end
|
|
||||||
end
|
|
||||||
```
|
|
||||||
|
|
||||||
Odds are, your serializer will look something like this:
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
class PostSerializer < ActiveModel::Serializer
|
|
||||||
attributes :id, :title, :body
|
|
||||||
end
|
|
||||||
```
|
|
||||||
|
|
||||||
This works all fine and well, but maybe you passing in some arbitrary options
|
|
||||||
into the serializer. These options can be anything that isn't already reserved for use by
|
|
||||||
ActiveModelSerializers' adapter options.
|
|
||||||
|
|
||||||
Here's an example:
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
# posts_controller.rb
|
|
||||||
class PostController < ApplicationController
|
|
||||||
def dashboard
|
|
||||||
render json: @posts, user_id: 12
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# post_serializer.rb
|
|
||||||
class PostSerializer < ActiveModel::Serializer
|
|
||||||
attributes :id, :title, :body
|
|
||||||
|
|
||||||
def comments_by_me
|
|
||||||
Comments.where(user_id: instance_options[:user_id], post_id: object.id)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
```
|
|
||||||
30
docs/howto/passing_arbitrary_options.md
Normal file
30
docs/howto/passing_arbitrary_options.md
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
[Back to Guides](../README.md)
|
||||||
|
|
||||||
|
# Passing Arbitrary Options To A Serializer
|
||||||
|
|
||||||
|
In addition to the [`serialization_scope`](../general/serializers.md#scope), any options passed to `render`
|
||||||
|
that are not reserved for the [adapter](../general/rendering.md#adapter_opts)
|
||||||
|
are available in the serializer as [instance_options](../general/serializers.md#instance_options).
|
||||||
|
|
||||||
|
For example, we could pass in a field, such as `user_id` into our serializer.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
# posts_controller.rb
|
||||||
|
class PostsController < ApplicationController
|
||||||
|
def dashboard
|
||||||
|
render json: @post, user_id: 12
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# post_serializer.rb
|
||||||
|
class PostSerializer < ActiveModel::Serializer
|
||||||
|
attributes :id, :title, :body
|
||||||
|
|
||||||
|
def comments_by_me
|
||||||
|
Comments.where(user_id: instance_options[:user_id], post_id: object.id)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
Since `user_id` isn't a reserved adapter option, we can process it via a serializer
|
||||||
|
method. The option is passed via the `instance_options` hash.
|
||||||
Loading…
Reference in New Issue
Block a user