Sha256: 2f709e824fc92d305bca27727e4875fe5af7abbbb53be265f1b22e105898c3c5
Contents?: true
Size: 1.65 KB
Versions: 7
Compression:
Stored size: 1.65 KB
Contents
# Object Attorney This gem allows you to create use cases 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"] } ```
Version data entries
7 entries across 7 versions & 1 rubygems