Sha256: eedd940301418e178b478522d514795fd96440181507740dc3759b35f66d6d94
Contents?: true
Size: 1.93 KB
Versions: 2
Compression:
Stored size: 1.93 KB
Contents
# Object Attorney This gem allows you to create **use cases**, **services** or **form objects** with ActiveModel validations and keep your model clean. [](https://codeclimate.com/github/goncalvesjoao/object_attorney) [](https://codeclimate.com/github/goncalvesjoao/object_attorney/coverage) [](https://travis-ci.org/goncalvesjoao/object_attorney) [](https://badge.fury.io/rb/object_attorney) ## 1) Basic Usage ```ruby class User < Struct.new(:title, :first_name, :last_name) end ``` ```ruby class UserValidator < ObjectAttorney::Base validates_presence_of :first_name validate :last_name_present def last_name_present(user) return if user.last_name.present? user.errors.add(:last_name, :blank) end end ``` ```ruby @user = User.new UserValidator.new(@user).valid? # false @user.errors.messages # { first_name: ["can't be blank"], last_name: ["can't be blank"] } ``` ## 2) Custom Usage ```ruby class User < ActiveRecord::Base end ``` ```ruby class UserValidator include ObjectAttorney defend :user validates_presence_of :first_name, if: :last_name_is_present attr_accessor :user def initialize(user) @user = user end def last_name_is_present(user) user.last_name.present? end end ``` ```ruby @user = User.new(last_name: 'Snow') UserValidator.new(@user).invalid? # true @user.errors.messages # { first_name: ["can't be blank"] } ``` ## 3) Installation To install Object Attorney on the default Rails stack, just put this line in your Gemfile: ```ruby gem 'object_attorney' ``` Then bundle: ``` $> bundle ``` and after that, I'd advise you to lock the gem's version in your Gemfile
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
object_attorney-3.2.0 | README.md |
object_attorney-3.1.2 | README.md |