README.md in object_attorney-3.0.0 vs README.md in object_attorney-3.0.2
- old
+ new
@@ -1,8 +1,8 @@
# Object Attorney
+This gem allows you to create use cases with ActiveModel validations and keep your model clean.
-
[![Code Climate](https://codeclimate.com/github/goncalvesjoao/object_attorney/badges/gpa.svg)](https://codeclimate.com/github/goncalvesjoao/object_attorney)
[![Test Coverage](https://codeclimate.com/github/goncalvesjoao/object_attorney/badges/coverage.svg)](https://codeclimate.com/github/goncalvesjoao/object_attorney/coverage)
[![Build Status](https://travis-ci.org/goncalvesjoao/object_attorney.svg?branch=master)](https://travis-ci.org/goncalvesjoao/object_attorney)
## 1) Basic Usage
@@ -10,27 +10,59 @@
class User < Struct.new(:title, :first_name, :last_name)
end
```
```ruby
-class UserValidator < Struct.new(:user)
+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
-end
+ validates_presence_of :first_name, if: :last_name_is_present
-# OR
+ attr_accessor :user
-class UserValidator < ObjectAttorney::Base
- validates_presence_of :first_name
+ def initialize(user)
+ @user = user
+ end
+
+ def last_name_is_present(user)
+ user.last_name.present?
+ end
end
```
```ruby
-@user = User.new
+@user = User.new(last_name: 'Snow')
-UserValidator.new(@user).valid?
+UserValidator.new(@user).invalid? # true
@user.errors.messages # { first_name: ["can't be blank"] }
```