module NxtSupport::AssignableValues
Public Instance Methods
assignable_values_for(column, values = [], **options, &block)
click to toggle source
# File lib/nxt_support/models/assignable_values.rb, line 8 def assignable_values_for(column, values = [], **options, &block) @assignable_values ||= {} @assignable_values[column.to_sym] = { values: (block_given? ? block.call : values), default: options[:default], allow_blank: options[:allow_blank] } define_assignable_instance_methods end
assignable_values_list_for(column)
click to toggle source
# File lib/nxt_support/models/assignable_values.rb, line 19 def assignable_values_list_for(column) assignable_values[column][:values] end
define_assignable_instance_methods()
click to toggle source
# File lib/nxt_support/models/assignable_values.rb, line 23 def define_assignable_instance_methods assignable_values.keys.each do |key| define_method :"valid_#{key.to_s.pluralize}" do self.class.assignable_values_list_for(key) end end end
Private Instance Methods
allow_blank_for?(attr)
click to toggle source
# File lib/nxt_support/models/assignable_values.rb, line 64 def allow_blank_for?(attr) self.class.assignable_values[attr][:allow_blank] end
attributes_to_validate()
click to toggle source
# File lib/nxt_support/models/assignable_values.rb, line 72 def attributes_to_validate new_record? ? self.class.assignable_values.keys : (changed_keys & self.class.assignable_values.keys) end
changed_keys()
click to toggle source
# File lib/nxt_support/models/assignable_values.rb, line 76 def changed_keys changes.keys.map(&:to_sym) end
changes_to_validate()
click to toggle source
# File lib/nxt_support/models/assignable_values.rb, line 80 def changes_to_validate new_record? ? attributes.symbolize_keys : changes.transform_values(&:last).symbolize_keys end
set_default_assignable()
click to toggle source
# File lib/nxt_support/models/assignable_values.rb, line 52 def set_default_assignable self.class.assignable_values.each do |column, assignable| next unless new_record? && send(column).nil? && assignable[:default] if assignable[:default].is_a? Proc send("#{column}=", instance_exec(&assignable[:default])) else send("#{column}=", assignable[:default]) end end end
values_are_assignable()
click to toggle source
# File lib/nxt_support/models/assignable_values.rb, line 39 def values_are_assignable attributes_to_validate.each do |attr| next if changes_to_validate[attr].blank? && allow_blank_for?(attr) next if changes_to_validate[attr].in?(assignable_values_for(attr)) if changes_to_validate[attr].blank? errors.add(attr, "can't be blank.") else errors.add(attr, "the value #{changes_to_validate[attr]} is not in the list of acceptable values.") end end end