这段代码在做什么?
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
答案 0 :(得分:3)
此语法称为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
该字符串,如果这有意义的话。