Module: StandardModel::ClassMethods
- Defined in:
- lib/app/models/concerns/standard_model.rb
Overview
Mixin to add methods to the classes themselves Used by calling model.method_name
Instance Method Summary collapse
-
#allowed_param_names(filter_names = []) ⇒ Object
Return the complete list of key names that would appear in the form.
-
#create_and_log(user, attributes) ⇒ Object
Record the creation with this user.
-
#create_and_log!(user, attributes) ⇒ Object
Record the creation with this user.
-
#field_names(filter_names) ⇒ Object
allow the model to filter out a name if they want to, meaning the model can return a subset of attribute names.
-
#find_or_create_by_and_log!(user, attributes) ⇒ Object
Find or create by filter, the log the action.
-
#log_change(user, model, changes) ⇒ Object
Log the audit record.
-
#make_options(options) ⇒ Object
Turn the array into a list of options.
-
#without_callback(*args, &_block) ⇒ Object
Used by calling ‘model.without_callback(*.args, &block) do’.
Instance Method Details
#allowed_param_names(filter_names = []) ⇒ Object
Return the complete list of key names that would appear in the form.
60 61 62 63 64 65 66 |
# File 'lib/app/models/concerns/standard_model.rb', line 60 def allowed_param_names(filter_names = []) # Always filter out the mongoid reserved items filter_names += %w[created_at updated_at _type _id] field_names(filter_names) rescue StandardError attribute_names.delete_if { |name| filter_names.include?(name) } end |
#create_and_log(user, attributes) ⇒ Object
Record the creation with this user
100 101 102 103 104 105 106 107 |
# File 'lib/app/models/concerns/standard_model.rb', line 100 def create_and_log(user, attributes) model = create(attributes) model.last_modified_by = user model.created_by = user model.save log_change(user, model, attributes) if model.valid? model end |
#create_and_log!(user, attributes) ⇒ Object
Record the creation with this user
112 113 114 115 116 117 118 119 |
# File 'lib/app/models/concerns/standard_model.rb', line 112 def create_and_log!(user, attributes) model = create!(attributes) model.last_modified_by = user model.created_by = user model.save! log_change(user, model, attributes) model end |
#field_names(filter_names) ⇒ Object
allow the model to filter out a name if they want to, meaning the model can return a subset of attribute names
72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/app/models/concerns/standard_model.rb', line 72 def field_names(filter_names) fields.collect do |field| next if filter_names.include?(field[0]) case field[1].[:type].to_s when 'Hash' { field[0] => {} } when 'Array' { field[0] => [] } else field[0] end end.compact end |
#find_or_create_by_and_log!(user, attributes) ⇒ Object
Find or create by filter, the log the action
90 91 92 93 94 95 |
# File 'lib/app/models/concerns/standard_model.rb', line 90 def find_or_create_by_and_log!(user, attributes) model = find_or_initialize_by(attributes) log_change(user, model, attributes) if model.new_record? && model.valid? model.save! model end |
#log_change(user, model, changes) ⇒ Object
Log the audit record
124 125 126 127 128 129 |
# File 'lib/app/models/concerns/standard_model.rb', line 124 def log_change(user, model, changes) Web47core::Config.audit_model_log_class.create!(Web47core::Config.audit_model => user, model: model, action: model.audit_action, changed_values: App47Logger.clean_params(changes).to_json) end |
#make_options(options) ⇒ Object
Turn the array into a list of options
53 54 55 |
# File 'lib/app/models/concerns/standard_model.rb', line 53 def () .collect { |t| [t, t.humanize] } end |
#without_callback(*args, &_block) ⇒ Object
Used by calling ‘model.without_callback(*.args, &block) do’
43 44 45 46 47 48 |
# File 'lib/app/models/concerns/standard_model.rb', line 43 def without_callback(*args, &_block) skip_callback(*args) yield ensure set_callback(*args) end |