This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class PostSerializer < ActiveModel::Serializer | |
attributes :id, :title, :details, :author | |
def author | |
object.get_author_lazily do |author| | |
# Serialize the author after it has been loaded. | |
ActiveModelSerializers::SerializableResource | |
.new(author) | |
.as_json[:user] | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class PostSerializer < ActiveModel::Serializer | |
attributes :id, :title, :details, :author | |
def author | |
object.get_author_lazily | |
end | |
end | |
class Post | |
def get_author_lazily | |
# The current post object is added to the batch here, |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
posts = Post.all | |
author_ids = posts.pluck(:author_id) | |
authors = User.where(:_id.in => author_ids) | |
# Somehow pass the author objects to the post serializer and | |
# map them to the correct post objects. Can't imagine what | |
# exactly that would look like, but probably not pretty. | |
render json: posts, pass_some_parameter_maybe: authors |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class PostSerializer < ActiveModel::Serializer | |
attributes :id, :title, :details, :author | |
# Will run n Mongo queries for n posts being rendered. | |
def author | |
User.find(object.author_id) | |
end | |
end | |
# This is now a Mongoid document, not an ActiveRecord model. | |
class User |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class PostsController < ApplicationController | |
def index | |
# Runs a SQL join with the users table. | |
posts = Post.includes(:author).all | |
render json: posts | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class PostsController < ApplicationController | |
def index | |
posts = Post.all | |
render json: posts | |
end | |
end | |
class Post | |
belongs_to :author, class_name: 'User' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module.exports = (user) => { | |
setImmediate(() => { | |
// Send a welcome email or whatever. | |
}); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class ChatUser { | |
displayNewMessageNotification(newMessage) { | |
// Push an alert message or something. | |
} | |
// `chatroom` is an instance of EventEmitter. | |
connectToChatroom(chatroom) { | |
chatroom.on('message-received', this.displayNewMessageNotification); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const myEmitter = require('./my_emitter'); | |
const sendEmailOnRegistration = require('./send_email_on_registration'); | |
const someOtherListener = require('./some_other_listener'); | |
const doSomethingEntirelyDifferent = require('./do_something_entirely_different'); | |
myEmitter.on('user-registered', sendEmailOnRegistration); | |
myEmitter.on('user-registered', someOtherListener); | |
myEmitter.on('user-registered:activated', doSomethingEntirelyDifferent); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const myEmitter = require('./my_emitter'); | |
// Perform the registration steps | |
// The application should react differently if the new user has been activated instantly. | |
if (user.activated) { | |
myEmitter.emit('user-registered:activated', user); | |
} else { | |
myEmitter.emit('user-registered', user); |
NewerOlder