Sha256: 03363bc27e6d0a8835242c34a4f76121ab8e906e2997fb44cd57f4b2939e4d84
Contents?: true
Size: 1.7 KB
Versions: 1
Compression:
Stored size: 1.7 KB
Contents
require 'virtus' require 'active_model/conversion' module ROM module Model # Mixin for validatable and coercible parameters # # @example # # class UserParams # include ROM::Model::Params # # attribute :email, String # attribute :age, Integer # # validates :email, :age, presence: true # end # # user_params = UserParams.new(email: '', age: '18') # # user_params.email # => '' # user_params.age # => 18 # # user_params.valid? # => false # user_params.errors # => #<ActiveModel::Errors:0x007fd2423fadb0 ...> # # @api public module Params VirtusModel = Virtus.model(strict: true, required: false) def self.included(base) base.class_eval do include VirtusModel include ActiveModel::Conversion end base.extend(ClassMethods) end def model_name self.class.model_name end module ClassMethods DEFAULT_TIMESTAMPS = [:created_at, :updated_at].freeze def [](input) input.is_a?(self) ? input : new(input) end def set_model_name(name) class_eval <<-RUBY def self.model_name @model_name ||= ActiveModel::Name.new(self, nil, #{name.inspect}) end RUBY end def timestamps(*attrs) if attrs.empty? DEFAULT_TIMESTAMPS.each do |t| attribute t, DateTime, default: proc { DateTime.now } end else attrs.each do |attr| attribute attr, DateTime, default: proc { DateTime.now } end end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rom-rails-0.3.0.beta1 | lib/rom/rails/model/params.rb |