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:
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:
model = MyModel.build(name: "John", age: 21)
And if you were to try to construct it invalid, you'd get:
model = MyModel.build(name: "John")
# Raises: PhModel::ValidationFailed: MyModel is invalid: Age can't be blank
Copyright (c) 2015 PayrollHero