class Golden::QueryForm
Attributes
mode[RW]
page[RW]
per[RW]
result[R]
sort[RW]
Public Class Methods
attributes()
click to toggle source
# File lib/golden/objects/query/query_form.rb, line 6 def attributes accessor_attributes end
new(params, accessors = {})
click to toggle source
# File lib/golden/objects/query/query_form.rb, line 22 def initialize(params, accessors = {}) @query_params = find_query_from(params) assign_attributes(strip_attributes(@query_params)) assign_attributes(strip_attributes(accessors || {})) @per ||= params.dig(:per) @page ||= params.dig(:page) @sort ||= params.dig(:sort) @mode ||= :paginated end
permits()
click to toggle source
# File lib/golden/objects/query/query_form.rb, line 10 def permits @permits ||= lambda do attrs = attributes.clone attrs.uniq end.call end
Public Instance Methods
save()
click to toggle source
# File lib/golden/objects/query/query_form.rb, line 32 def save return false if invalid? query! errors.empty? end
Private Instance Methods
find_query_from(params)
click to toggle source
# File lib/golden/objects/query/query_form.rb, line 41 def find_query_from(params) if ::Object.const_defined?('ActionController') && params.is_a?(ActionController::Parameters) params.require(:query).permit(*self.class.permits) else params.dig(:query)&.slice(*self.class.permits) || {} end rescue ActionController::ParameterMissing {} end
query!()
click to toggle source
# File lib/golden/objects/query/query_form.rb, line 58 def query! raise NotImplementedError, <<~ERROR Please define #{__method__} like ``` def #{__method__} context = ::Orders::QueryContext.new query_accessors @result = context.perform(mode) errors.merge! context.errors end ``` ERROR end
query_accessors()
click to toggle source
# File lib/golden/objects/query/query_form.rb, line 51 def query_accessors attrs = attributes.clone attrs.delete(:mode) attrs.each { |accessor, value| attrs.delete(accessor) if value.blank? } attrs end