方法
- S
常量
VERSION | = | "10.0.0" |
类公共方法
sql(sql_string, *positional_binds, retryable: false, **named_binds) 链接
将已知安全的 SQL 字符串包装起来以传递给查询方法,例如:
Post.order(Arel.sql("REPLACE(title, 'misc', 'zzzz') asc")).pluck(:id)
应格外谨慎以避免 SQL 注入漏洞。此方法不应与不安全的值(如请求参数或模型属性)一起使用。
查看安全指南了解更多信息。
要构建更复杂的查询片段,包括可能使用用户提供的值,sql_string
可以包含 ?
和 :key
占位符,对应于附加参数。请注意,此行为仅在调用时提供绑定值参数时适用;如果没有提供绑定值参数,占位符标记将没有特殊含义,并将原样传递到查询中。
:retryable
选项可用于将 SQL 标记为安全重试。仅当 SQL 是幂等的时才使用此选项,因为它可能被执行多次。
来源:显示 | 在 GitHub 上
# File activerecord/lib/arel.rb, line 52 def self.sql(sql_string, *positional_binds, retryable: false, **named_binds) if positional_binds.empty? && named_binds.empty? Arel::Nodes::SqlLiteral.new(sql_string, retryable: retryable) else Arel::Nodes::BoundSqlLiteral.new sql_string, positional_binds, named_binds end end