Sha256: afd9ea5e3dc5b92c0b3d95431a5e8e7ce9d2c8504a3e5265bc2a7554d868ebb9

Contents?: true

Size: 1.48 KB

Versions: 4

Compression:

Stored size: 1.48 KB

Contents

# ph_model

* [Homepage](https://rubygems.org/gems/ph_model)
* [Documentation](http://rubydoc.info/gems/ph_model/frames)
* [Email](mailto:piotr@payrollhero.com)
* [Changelog](CHANGELOG.md)

## Description

[![Build Status](https://travis-ci.org/payrollhero/ph_model.svg?branch=master)](https://travis-ci.org/payrollhero/ph_model)
[![Code Climate](https://codeclimate.com/github/payrollhero/ph_model/badges/gpa.svg)](https://codeclimate.com/github/payrollhero/ph_model)
[![Issue Count](https://codeclimate.com/github/payrollhero/ph_model/badges/issue_count.svg)](https://codeclimate.com/github/payrollhero/ph_model)
[![Dependency Status](https://gemnasium.com/payrollhero/ph_model.svg)](https://gemnasium.com/payrollhero/ph_model)

This Gem basically marries ActiveModel and ActiveAttr is a nice package.

The general format for this is that you make classes mixing in PhModel, and then you can use them easier
as data objects.

Eg:
```ruby
class MyModel
  include PhModel
  
  attribute :name, type: String
  attribute :age, type: Fixnum
  
  validates :name, presence: true
  validates :age, presence: true
end
```

And then .. you're meant to build these things via `.build` to ensure that they're valid when constructed.

Eg:
```ruby
model = MyModel.build(name: "John", age: 21)
```

And if you were to try to construct it invalid, you'd get:

```ruby
model = MyModel.build(name: "John")
# Raises: PhModel::ValidationFailed: MyModel is invalid: Age can't be blank
```

## Copyright

Copyright (c) 2015 PayrollHero

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ph_model-1.1.0 README.md
ph_model-1.0.2 README.md
ph_model-1.0.1 README.md
ph_model-1.0.0 README.md