Module: Discerner::Methods::Models::SearchParameterValue
- Included in:
- SearchParameterValue
- Defined in:
- lib/discerner/methods/models/search_parameter_value.rb
Class Method Summary collapse
Instance Method Summary collapse
- #disabled? ⇒ Boolean
- #formatted_values ⇒ Object
-
#initialize(*args) ⇒ Object
Instance Methods.
- #to_sql ⇒ Object
- #validate_dates_format ⇒ Object
Class Method Details
.included(base) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/discerner/methods/models/search_parameter_value.rb', line 5 def self.included(base) base.send :include, SoftDelete base.send :include, Warning # Associations base.send :belongs_to, :search_parameter, inverse_of: :search_parameter_values base.send :belongs_to, :parameter_value, inverse_of: :search_parameter_values base.send :belongs_to, :operator, inverse_of: :search_parameter_values # Scopes base.send(:scope, :chosen, -> { base.where(chosen: true) }) base.send(:scope, :ordered_by_display_order, -> { base.order('discerner_search_parameter_values.display_order ASC') }) #Validations base.send :validate, :validate_operator base.send :validates, :search_parameter, presence: true # Hooks base.send :before_validation, :cleanup_parameter_values base.send :after_commit, :destroy_if_deleted_parameter_value, on: :update base.send :after_commit, :mark_search_updated end |
Instance Method Details
#disabled? ⇒ Boolean
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/discerner/methods/models/search_parameter_value.rb', line 64 def disabled? return false unless persisted? if parameter_value.blank? && value.blank? && operator && operator.operator_type != 'presence' warnings.add(:base, "Parameter value has to be selected") return true end if chosen? && parameter_value.blank? || parameter_value && parameter_value.deleted? warnings.add(:base, "Parameter value has been deleted and has to be removed from the search") return true end if search_parameter && search_parameter.parameter && search_parameter.parameter.parameter_type.name == 'date' && !validate_dates_format warnings.add(:base, "Provided date is not valid") return true end if parameter_value.blank? && search_parameter.parameter.parameter_type.name == 'combobox' warnings.add(:base, "Parameter value has to be selected") return true end warnings.clear return false end |
#formatted_values ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/discerner/methods/models/search_parameter_value.rb', line 52 def formatted_values all_values = [value, additional_value].compact case search_parameter.parameter.parameter_type.name when 'date' all_values.map{|v| v.to_date} when 'numeric' all_values.map{|v| v.to_f} else all_values end end |
#initialize(*args) ⇒ Object
Instance Methods
29 30 31 |
# File 'lib/discerner/methods/models/search_parameter_value.rb', line 29 def initialize(*args) super(*args) end |
#to_sql ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/discerner/methods/models/search_parameter_value.rb', line 33 def to_sql sql = {} raise "Search operator has to be defined in order to run 'to_sql' method on search_parameter_value" if operator.blank? case operator.operator_type when 'comparison' sql[:predicates] = "#{search_parameter.parameter.search_method} #{operator.symbol} ?" sql[:values] = formatted_values.first when 'range' sql[:predicates] = "#{search_parameter.parameter.search_method} #{operator.symbol} ? and ?" sql[:values] = formatted_values when 'text_comparison' sql[:predicates] = "#{search_parameter.parameter.search_method} #{operator.symbol} ?" sql[:values] = "%#{formatted_values.first}%" when 'presence' sql[:predicates] = "#{search_parameter.parameter.search_method} #{operator.symbol}" end sql end |
#validate_dates_format ⇒ Object
86 87 88 |
# File 'lib/discerner/methods/models/search_parameter_value.rb', line 86 def validate_dates_format validate_date(value) && validate_date(additional_value) end |