Skip to content

Instantly share code, notes, and snippets.

@amiel
Last active December 16, 2015 00:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save amiel/5349983 to your computer and use it in GitHub Desktop.
Save amiel/5349983 to your computer and use it in GitHub Desktop.
An oversimplification of some rails best practices over time.
class WidgetsController < ApplicationController
def create
@widget = Widget.new(params[:widget])
if @widget.save
SpamMailer.widget_spam(@widget).deliver
redirect_to widget, notice: 'Widget created'
else
render 'new'
end
end
end
class WidgetsController < ApplicationController
def create
@widget = Widget.new(params[:widget])
if @widget.save
redirect_to widget, notice: 'Widget created'
else
render 'new'
end
end
end
class Widget < ActiveRecord::Base
def spam_mailer
SpamMailer.widget_spam self
end
end
class WidgetObserver < ActiveRecord::Observer
def after_create(widget)
widget.spam_mailer.deliver
end
end
class WidgetsController < ApplicationController
def create
@widget_creator = WidgetCreator.new(params[:widget])
@widget = @widget_creator.widget
if @widget_creator.save
redirect_to widget, notice: 'Widget created'
else
render 'new'
end
end
end
class Widget < ActiveRecord::Base
def spam_mailer
SpamMailer.widget_spam self
end
end
class WidgetCreator
attr_reader :widget
def initialize(params)
@widget = Widget.new(params)
end
def deliver_spam!
widget.spam_mailer.deliver
end
def save
result = widget.save
deliver_spam! if result
result
end
end
@adrianpike
Copy link

You misspelled creator.

:trollface:

@amiel
Copy link
Author

amiel commented Apr 9, 2013

:lol:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment