我正在学习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
的值来自何处?
答案 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 /键是列名,值是它们各自的值。