johnhamelink
3/23/2015 - 2:31 PM

users.rb

module Customerq::V1
  class Users < Grape::API
    include Customerq::V1::Defaults

    resource :users do
      desc 'Register a user to the API'
      params do
        group :register, type: Hash do
          requires :first_name, type: String, desc: 'First Name'
          requires :last_name, type: String, desc: 'Last Name'
          requires :email, type: String, desc: 'Email Address'
          requires :phone_number, type: String, desc: 'Phone Number'
          requires :password, type: String, desc: 'Password'
          optional :nick_name, type: String, desc: 'Nick Name'
          optional :avatar, type: String, desc: 'Avatar URL'
          optional :date_of_birth, type: DateTime, desc: 'Date of Birth'
        end
      end
      post :register do
        u = User.where(email: params[:register][:email])
          .first_or_initialize(declared(params, {include_missing: false})[:register])
        if u.valid?
          render u.save
        else
          error! u.errors.full_messages
        end
      end
    end

  end
end