Sha256: b352057bb9cbc9b73d6b3f3d0907bf4fb0bef07c0274753f110cce435812fec6

Contents?: true

Size: 1.08 KB

Versions: 4

Compression:

Stored size: 1.08 KB

Contents

module Boxroom
  module Models
    module ClassMethods
      def boxroom(params)
        throw "Provide 'name:' param for 'boxroom' method in your user model" if params[:name].nil?
        throw "Provide 'email:' param for 'boxroom' method in your user model" if params[:email].nil?
        throw "Provide 'is_admin:' param for 'boxroom' method in your user model" if params[:is_admin].nil?

        after_save -> { save_boxroom_user(params) }
        before_destroy -> { destroy_boxroom_user(params) }
      end
    end

    module InstanceMethods
      def save_boxroom_user(params)
        bu = Boxroom::User.find_by_original_id(id)
        bu = Boxroom::User.new if bu.nil?
        bu.original_id = id
        bu.name = send(params[:name])
        bu.email = send(params[:email])
        bu.is_admin = send(params[:is_admin])
        bu.save
        throw "Failed to save Boxroom::User with email=#{bu.email}" unless bu.persisted?
      end

      def destroy_boxroom_user(params)
        bu = Boxroom::User.find_by_original_id(id)
        bu.destroy if bu
        true
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
boxroom-0.0.5 lib/boxroom/models.rb
boxroom-0.0.4 lib/boxroom/models.rb
boxroom-0.0.3 lib/boxroom/models.rb
boxroom-0.0.2 lib/boxroom/models.rb