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

时间:2015-01-30 18:21:38

标签: ruby-on-rails file-io foreach

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

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

下面的块对我来说有点混乱,我不确定第二个循环背后的一些机制。

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.attributes的值来自何处?

2 个答案:

答案 0 :(得分:1)

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

“属性”是该记录的不同属性,请参见此处: http://apidock.com/rails/ActiveRecord/Base/attributes

答案 1 :(得分:1)

all来自ActiveRecord::Scoping::Named。它是一个类方法,基本上是说给我这个模型的所有记录(在这种情况下为Page)。

另一方面,

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