Comments (6)
@AlessandroMinali @nulldef what do you think would be the best option here?
from surrealist.
Personally I prefer via
or format
.
from surrealist.
We can try using for
keyword.
format
is terrible I think. And about via
- maybe It will be more semantically correct in some cases, but not in mostly cases.
from surrealist.
Yes, maybe you are right and for
is a good option since the most cases where one would need multiple serializers would be a web application with a number of presentation points of some models. Something like
class Post < ActiveRecord::Base
include Surrealist
surrealize_with PostSerializer
surrealize_with PostPreviewSerializer, tag: :preview
surrealize_with PostApiSerializer, tag: :api
surrealize_with PostFrontendSerializer, tag: :frontend
end
In this case the most appropriate way to specify serialiser would be to specify the goal of serialization.
Post.find(42).surrealize(for: :preview)
Post.find(42).surrealize(for: :api)
Post.find(42).surrealize(for: :frontend)
Post.find(42).surrealize(via: :preview)
doesn't seem quite right in this case. So the question is whether this kind of context would be primary for the most of the use cases of this feature. @AlessandroMinali what do you think?
from surrealist.
:for
seems fine to me.
I guess one way to cover all use cases is to be pedantic and just call the option :serializer
. That leaves nothing to the imagination and is pretty dry about what is going on/being passed. In that case I'd still argue for :as
to set the alias.
If the user sets a tag but then still wants to be explicit and call the actual serializer by the constant are we going to allow that?
i.e.:
Something.new.surrealize(tag: :short)
Something.new.surrealize(tag: SomethingShortSerializer)
from surrealist.
I guess we will provide the option to specify the serialiser class with
Post.find(42).surrealize(serializer: PostPreviewSerializer)
. And for symbols let's leave for
:
Post.find(42).surrealize(for: :preview)
from surrealist.
Related Issues (20)
- Some methods are not being correctly delegated HOT 1
- Unable to override method in 1.2 HOT 3
- Question: how to create list of entities HOT 5
- Can't redefine object method with inheritance HOT 1
- How I can set a root key? HOT 2
- Inherited Surrealist::Serializer does not accept array as object HOT 5
- Nil values for Boolean type HOT 4
- Methods from included module which conflict with methods from the model don't work. HOT 1
- Pluggable type systems HOT 4
- How to qualify parameters in nested structures?
- Build schema for collections from Surrealist::Serializer
- Default options HOT 4
- ActiveModel validations? HOT 2
- Sequel models do not work with custom serializers HOT 1
- conditional tags for json_schema HOT 3
- Inheritance doesn't work in custom serializers HOT 1
- Conflict when root and and object property share the same name HOT 1
- Serialize from hash HOT 5
- Easy access to defined schema and schema sample HOT 12
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from surrealist.