【问题标题】:Function with array and delineated string as parameters以数组和划定字符串为参数的函数
【发布时间】:2015-03-01 23:26:38
【问题描述】:

这段代码在做什么?

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 是如何正确作为第一个参数传递的(再次使用 &lt;&lt;-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

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    这种语法称为here document

    相当于这样:

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

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

    【讨论】:

      猜你喜欢
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-24
      • 1970-01-01
      • 2021-01-11
      • 1970-01-01
      相关资源
      最近更新 更多