在after_save_filter中生成CSV时未定义的方法'column_names'

时间:2012-09-03 07:28:44

标签: ruby-on-rails csv after-save

我想在用户创建帐户后生成CSV文件,因此我在after_save模型中创建了User过滤器,但我收到错误。

这是我的代码:

    after_save :to_csv

    def to_csv(options = {})
    require 'csv'
    CSV.generate(options) do |csv|
        csv << self.column_names//also tried User.column_names
        csv << self.attributes.values_at(*column_names)
    end
    end

但是当创建用户时,我收到错误:

     undefined local variable or method `column_names' for #<User:0x326f778>       
     app/models/user.rb:52:in `block in to_csv'
     app/models/user.rb:50:in `to_csv'
     app/controllers/users_controller.rb:27:in `create'

为什么我得到这个?我正在使用这个railscast - http://railscasts.com/episodes/362-exporting-csv-and-excel

3 个答案:

答案 0 :(得分:4)

column_names是课堂上的一种方法。你在实例上调用它。如果您确实需要column_names,请使用self.class.column_names

答案 1 :(得分:3)

尝试返回列的self.attributes.keys

答案 2 :(得分:0)

他在比赛中有点迟到但在这里

self.attribute_names

为我做的工作。