Virtus::Extras

Set of extra extensions to the Virtus Gem: https://github.com/solnic/virtus

Installation

gem install virtus-extras

gem 'virtus-extras'

And then execute:

$ bundle

Or install it yourself as:

$ gem install virtus-extras

Usage

Virtus::Extras::FormObject

Instead of this:

# app/form_object/user_entry.rb
require 'active_model'
require 'active_support'
class UserEntry
  include Virtus.model

  extend ActiveModel::Naming
  include ActiveModel::Conversion

  attribute :first_name, String
  attribute :last_name, String
  attribute :display_name, String
  attribute :is_active, Integer
  attribute :hidden, Integer, :write => :private
end

FormObject:

Same syntax as Rails validations

# app/form_object/user_entry.rb
require 'active_model'
require 'active_support'
require 'virtus/extras'

class UserEntry
  include Virtus.model

  extend ActiveModel::Naming
  include ActiveModel::Conversion
  extend Virtus::Extras::FormObject

  form_attributes :first_name,
                  :last_name,
                  :display_name,
                  :model => String

  form_attributes :is_active,
                  :model => Integer

  form_attributes :hidden,
                  :model => Integer,
                  :writer => :private
end

Contributing

  1. Fork it ( https://github.com/[my-github-username]/Virtus-extras/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request