在
Exporting CSV from a rails app的一个屏幕上,Ryan Bates提供了以下简单代码.
我试图弄清楚如何在ProductController.rb的第5行调用类方法Product :: to_csv,因为它似乎不遵循正常的Ruby规则.
product.rb
1 class Product < ActiveRecord::Base 2 def self.to_csv(options = {}) 3 ... 4 end 5 end
products_controller.rb
1 class ProductsController < ApplicationController 2 def index 3 @products = Product.order(:name) 4 respond_to do |format| 5 format.csv { send_data @products.to_csv } 6 ... 7 end 8 end 9 end
由于to_csv是一个类方法,我希望调用看起来像Product :: to_csv().
根据文档,@ product是ActiveRecord :: Relation的一个实例.为什么发送到ActiveRecord :: Relation实例的消息会导致调用Product类对象的方法?为了使它更奇怪,在发送方和接收方中将to_csv重命名为某个任意名称会导致NoMethodError,所以也许根据以to_开头的名称进行一些神奇的冒险?
我错过了一些明显的东西吗任何澄清将不胜感激.