method
sanitize_sql_for_assignment
Ruby on Rails latest stable (v7.1.3.2)
-
0 notes -
Class: ClassMethods
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.8
- 3.0.0
- 3.0.9
- 3.1.0
- 3.2.1 (0)
- 3.2.8 (0)
- 3.2.13 (0)
- 4.0.2 (-1)
- 4.1.8 (0)
- 4.2.1 (0)
- 4.2.7 (0)
- 4.2.9 (0)
- 5.0.0.1 (32)
- 5.1.7 (0)
- 5.2.3 (-1)
- 6.0.0 (0)
- 6.1.3.1 (0)
- 6.1.7.7 (0)
- 7.0.0 (0)
- 7.1.3.2 (38)
- 7.1.3.4 (0)
- What's this?
sanitize_sql_for_assignment(assignments, default_table_name = table_name)
public
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 a 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'"