instance method
sanitize_sql_for_assignment
Ruby on Rails 7.2.3
Since v3.2.22.5Signature
sanitize_sql_for_assignment(assignments, default_table_name = table_name)
Accepts an array or hash of SQL conditions and sanitizes them into a valid SQL fragment for a SET clause.
sanitize_sql_for_assignment(["name=? and group_id=?", nil, 4]) # => "name=NULL and group_id=4" sanitize_sql_for_assignment(["name=:name and group_id=:group_id", name: nil, group_id: 4]) # => "name=NULL and group_id=4" Post.sanitize_sql_for_assignment({ name: nil, group_id: 4 }) # => "`posts`.`name` = NULL, `posts`.`group_id` = 4"
This method will NOT sanitize an SQL string since it won’t contain any conditions in it and will return the string as is.
sanitize_sql_for_assignment("name=NULL and group_id='4'") # => "name=NULL and group_id='4'"
Note that this sanitization method is not schema-aware, hence won’t do any type casting and will directly use the database adapter’s quote method. For MySQL specifically this means that numeric parameters will be quoted as strings to prevent query manipulation attacks.
sanitize_sql_for_assignment(["role = ?", 0]) # => "role = '0'"
Parameters
-
assignmentsreq -
default_table_nameopt = table_name
Source
# File activerecord/lib/active_record/sanitization.rb, line 68
def sanitize_sql_for_assignment(assignments, default_table_name = table_name)
case assignments
when Array; sanitize_sql_array(assignments)
when Hash; sanitize_sql_hash_for_assignment(assignments, default_table_name)
else assignments
end
end
Defined in activerecord/lib/active_record/sanitization.rb line 68
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveRecord::Sanitization::ClassMethods