Object Attorney

Code Climate Test Coverage Build Status

1) Basic Usage

class User < Struct.new(:title, :first_name, :last_name)
end
class UserValidator < Struct.new(:user)
  include ObjectAttorney

  defend :user

  validates_presence_of :first_name
end

# OR

class UserValidator < ObjectAttorney::Base
  validates_presence_of :first_name
end
@user = User.new

UserValidator.new(@user).valid?

@user.errors.messages # { first_name: ["can't be blank"] }