Skip to content

Instantly share code, notes, and snippets.

@m1foley
Last active January 31, 2018 22:51
Show Gist options
  • Save m1foley/1b074265432939ac8b960c8488d7edab to your computer and use it in GitHub Desktop.
Save m1foley/1b074265432939ac8b960c8488d7edab to your computer and use it in GitHub Desktop.
Form object with error handling
class Signup
include ActiveModel::Model
attr_accessor :email, :team_name
validates :email, presence: true
validates :team_name, presence: true
def save
return false unless valid?
user = User.new(email: email)
team = Team.new(user: user, name: team_name)
if user.save && team.save
true
else
add_errors_from(user, team)
false
end
end
end
# ActiveModel convenience monkeypatch
module ActiveModel::Validations::HelperMethods
def add_errors_from(*objects)
objects.compact.each do |object|
object.errors.each do |name, message|
self.errors.add(name, message)
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment