Sha256: 01cf69763462af14656cc99a22159542ca6cc1294970ab8cfc6a276f7c99e24e

Contents?: true

Size: 1.29 KB

Versions: 2

Compression:

Stored size: 1.29 KB

Contents

module ErpBaseErpSvcs
  module Extensions
    module ActiveRecord
      module ActsAsFixedAsset

        def self.included(base)
          base.extend(ClassMethods)
        end

        module ClassMethods
          def acts_as_fixed_asset
            extend ActsAsFixedAsset::SingletonMethods
            include ActsAsFixedAsset::InstanceMethods

            after_initialize :initialize_fixed_asset
            after_create :save_fixed_asset
            after_update :save_fixed_asset
            after_destroy :destroy_fixed_asset

            has_one :fixed_asset, :as => :fixed_asset_record

          end
        end

        module SingletonMethods
        end

        module InstanceMethods
          def root_asset
            self.fixed_asset
          end

          def save_fixed_asset
            self.fixed_asset.description = self.description
            self.fixed_asset.save
          end

          def initialize_fixed_asset
            if self.new_record? and self.fixed_asset.nil?
              fa = FixedAsset.new
              self.fixed_asset = fa
              fa.fixed_asset_record = self
            end
          end

          def destroy_fixed_asset
            self.fixed_asset.destroy if (self.fixed_asset && !self.fixed_asset.frozen?)
          end
        end

      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
erp_base_erp_svcs-4.2.0 lib/erp_base_erp_svcs/extensions/active_record/acts_as_fixed_asset.rb
erp_base_erp_svcs-4.0.0 lib/erp_base_erp_svcs/extensions/active_record/acts_as_fixed_asset.rb