有人可以帮助我理解 RAILS 4 中这个块的一部分吗?

can someone help me understand part of this block in RAILS 4?

我正在学习 excel/csv 在 rails 中导入。我正在观看 Ryan B 的这段视频。

http://railscasts.com/episodes/362-exporting-csv-and-excel

下面的块让我有点困惑,我不确定第二个 each 循环背后的一些机制。

model/page.rb

  def self.to_csv
    CSV.generate do |csv|      
      csv << column_names   
      all.each do |pages|  
        csv << pages.attributes.values_at(*column_names)
      end
    end
  end

all从哪里来的? 是这个方法吗? http://apidock.com/rails/ActiveRecord/Base/all/class

如果是这样,all指的是什么?我知道 pages 是一个块变量,但是 pages.attributes 的值从何而来?

"all" 是 "Model.find(:all)" 的别名,因此它获取该模型的所有记录,即数据库中的所有 "pages",因为您在"Page" 模型。

"attributes"是那条记录的不同属性,看这里: http://apidock.com/rails/ActiveRecord/Base/attributes

all 来自 ActiveRecord::Scoping::Named。这是一个 class 方法,基本上是说让我获取该模型的所有记录(在本例中为 Page)。

另一方面,

attributes 是来自 ActiveRecord::AttributeMethods 的实例方法。它 returns a Hash w/键是列名,值是它们各自的值。