Skip to content
Snippets Groups Projects
Select Git revision
  • master default
  • uiUpdates
  • 1.0.0
3 results

resource.rb

Blame
  • resource.rb 1.15 KiB
    require 'active_record'
    require 'models/resource_approver'
    require 'models/resource_authorization'
    require 'models/resource_class'
    require 'models/resource_field'
    require 'models/resource_field_data'
    
    class Resource < ActiveRecord::Base
    	has_many :reservations, dependent: :destroy
    	has_many :resource_approvers, dependent: :destroy
    	has_many :resource_authorizations, dependent: :destroy
    	belongs_to :resource_class
    	has_many :resource_field_datas, dependent: :destroy
    	alias_method :approvers, :resource_approvers
    
    	def method_missing(meth_sym)
    		# check if this symbol can be associated with a field for this class
    		if !self.resource_class.nil? && (field = ResourceField.find_by(:resource_class_id => self.resource_class.id, :field_name => meth_sym.to_s.downcase))
    			# use this field id to retrieve the data from the resoruce field data table
    			data = ResourceFieldData.find_by(:resource_id => self.id, :resource_field_id => field.id)
    			unless data.nil?
    				return data.data
    			end	
    		end
    		super
    	end
    
    	def get_field_data
    		{}.tap do |hash|
    			self.resource_field_datas.each do |data|
    				hash[data.resource_field.field_name.downcase] = data.data
    			end
    		end
    	end
    end