Module: ErpTechSvcs::Extensions::ActiveRecord::HasUserDefinedData::SingletonMethods
- Defined in:
- lib/erp_tech_svcs/extensions/active_record/has_user_defined_data.rb
Instance Method Summary collapse
- #add_user_defined_field(field_name, label, data_type, scope = nil) ⇒ Object (also: #add_user_field)
- #remove_all_user_defined_data ⇒ Object (also: #remove_user_fields)
- #remove_user_defined_field(field_name, scope = nil) ⇒ Object (also: #remove_user_field)
- #update_user_defined_field(field_name, label, scope = nil) ⇒ Object (also: #update_user_field)
- #user_defined_field(field_name, scope = nil) ⇒ Object (also: #user_field)
- #user_defined_fields(scope = nil) ⇒ Object (also: #user_fields)
Instance Method Details
#add_user_defined_field(field_name, label, data_type, scope = nil) ⇒ Object Also known as: add_user_field
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_user_defined_data.rb', line 74 def add_user_defined_field(field_name, label, data_type, scope=nil) current_user_field = self.user_field(field_name, scope) if current_user_field raise Error::UserDefinedFieldAlreadyExists else user_defined_field = UserDefinedField.new(field_name: field_name, label: label, data_type: data_type) user_defined_data = if scope # return array and remove nil if none with specified scope UserDefinedData.where('scope = ? and model_name = ?', scope, self.name).first else UserDefinedData.where('scope = ? and model_name = ?', nil, self.name) end user_defined_data = UserDefinedData.new(scope: scope, model_name: self.name) unless user_defined_data user_defined_data.user_defined_fields << user_defined_field user_defined_data.save user_defined_field end end |
#remove_all_user_defined_data ⇒ Object Also known as: remove_user_fields
41 42 43 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_user_defined_data.rb', line 41 def remove_all_user_defined_data UserDefinedData.destroy_all("model_name = #{self.name}") end |
#remove_user_defined_field(field_name, scope = nil) ⇒ Object Also known as: remove_user_field
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_user_defined_data.rb', line 114 def remove_user_defined_field(field_name, scope=nil) user_defined_data = if scope # return array and remove nil if none with specified scope UserDefinedData.where('scope = ? and model_name = ?', scope, self.name).first else UserDefinedData.where('scope = ? and model_name = ?', nil, self.name) end if user_defined_data user_defined_field = user_defined_data.user_defined_fields.where('field_name = ?', field_name) if user_defined_field user_defined_field.destroy else raise Errors::UserDefinedFieldDoesNotExist end else raise Errors::UserDefinedDataDoesNotExist end end |
#update_user_defined_field(field_name, label, scope = nil) ⇒ Object Also known as: update_user_field
101 102 103 104 105 106 107 108 109 110 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_user_defined_data.rb', line 101 def update_user_defined_field(field_name, label, scope=nil) current_user_field = self.user_field(field_name, scope) if current_user_field current_user_field.label = label current_user_field.save else raise Errors::UserDefinedFieldDoesNotExist end end |
#user_defined_field(field_name, scope = nil) ⇒ Object Also known as: user_field
65 66 67 68 69 70 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_user_defined_data.rb', line 65 def user_defined_field(field_name, scope=nil) UserDefinedField.joins(:user_defined_data) .where('model_name = ?', self.name) .where('scope = ?', scope) .where('field_name = ?', field_name).first end |
#user_defined_fields(scope = nil) ⇒ Object Also known as: user_fields
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_user_defined_data.rb', line 47 def user_defined_fields(scope=nil) user_defined_data = if scope # return array and remove nil if none with specified scope [UserDefinedData.where('scope = ? and model_name = ?', scope, self.name).first].compact else UserDefinedData.where('model_name = ?', self.name).all end if user_defined_data.empty? [] else user_defined_data.collect(&:user_defined_fields).flatten end end |