class Userbin::Model

Public Class Methods

instance_custom(method, action) click to toggle source
# File lib/userbin/models/model.rb, line 48
    def self.instance_custom(method, action)
      #
      # Add method calls to association: user.challenges.verify(id, attributes)
      #
      AssociationProxy.class_eval <<-RUBY, __FILE__, __LINE__ + 1
        install_proxy_methods :association, :#{action}
      RUBY
      HasManyAssociation.class_eval <<-RUBY, __FILE__, __LINE__ + 1
        def #{action}(id, attributes={})
          @klass.build({:id => id, :"\#{@parent.singularized_resource_name}_id" => @parent.id}).#{action}(attributes)
        end
      RUBY

      #
      # Add method call to instance: user.enable_mfa
      #
      class_eval <<-RUBY, __FILE__, __LINE__ + 1
        def #{action}(params={})
          self.class.#{method}("\#{request_path}/#{action.to_s.delete('!')}", params)
        end
      RUBY
    end
new(args = {}) click to toggle source
Calls superclass method
# File lib/userbin/models/model.rb, line 15
def initialize(args = {})
  # allow initializing with id as a string
  args = { id: args } if args.is_a? String
  super(args)
end

Public Instance Methods

attributes() click to toggle source

Transform model.user.id to model.user_id to allow calls on nested models

Calls superclass method
# File lib/userbin/models/model.rb, line 22
def attributes
  attrs = super
  if attrs['user'] && attrs['user']['id']
    attrs.merge!('user_id' => attrs['user']['id'])
    attrs.delete 'user'
  end
  attrs
end
to_json() click to toggle source

Remove the auto-generated embedded User model to prevent recursion

# File lib/userbin/models/model.rb, line 32
def to_json
  attrs = attributes
  if attrs['user'] && attrs['user']['id'] == '$current'
    attrs.delete 'user'
  end
  attrs.to_json
end