使用数组和描述字符串作为参数的函数

时间:2015-01-04 04:24:29

标签: ruby-on-rails ruby

这段代码在做什么?

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

1 个答案:

答案 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该字符串,如果这有意义的话。