以数组和划定字符串为参数的函数

Function with array and delineated string as parameters

这段代码在做什么?

find_by_sql [<<-SQL, db_time_now, db_time_now]
      UPDATE pages SET locked_at = ?, updated_at = ?
      WHERE id IN (#{pages_subquery})
      RETURNING *
    SQL

我特别困惑 SQL 是如何作为第一个参数正确传递的(再次使用 <<-SQL 表示法是什么意思?)。

find_by_sql 文档:http://apidock.com/rails/ActiveRecord/Querying/find_by_sql

此代码来自:https://github.com/Genius/trackback_scraper/blob/master/app/models/page.rb#L55-L59

此语法称为 here document

相当于:

find_by_sql ["
  UPDATE pages SET locked_at = ?, updated_at = ?
  WHERE id IN (#{pages_subquery})
  RETURNING *", db_time_now, db_time_now]

基本上,在字符串应该去的地方键入 <<-SOMETHING 将使文件中接下来几行中的任何内容都出现在该字符串中,直到遇到 SOMETHING,如果这有意义的话。