module RequiredQueryAttributes::Relation
Public Instance Methods
load(*)
click to toggle source
Intercepts calls to 'load', validating for required attributes before execution
Calls superclass method
# File lib/required_query_attributes/relation.rb, line 8 def load(*) required_query_attributes = @klass.required_query_attributes check_required_query_attributes(required_query_attributes) if required_query_attributes super end
Private Instance Methods
check_required_query_attributes(required_query_attributes)
click to toggle source
# File lib/required_query_attributes/relation.rb, line 16 def check_required_query_attributes(required_query_attributes) predicate_attributes = where_clause.send(:predicates). select { |node| node.left.relation.name == table_name }. map { |node| node.left.name } missing_names = required_query_attributes - predicate_attributes if missing_names.present? raise RequiredAttributeMissing, "Required attributes #{missing_names} missing from query: #{to_sql.truncate(200)}" end end