2

我想在用户创建他的帐户后生成 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

4

3 回答 3

4

column_names是类上的一个方法。你在实例上调用它。如果你真的想要column_names然后使用self.class.column_names.

于 2012-09-03T07:38:57.323 回答
3

尝试self.attributes.keys哪些返回列

于 2012-09-03T07:37:30.270 回答
0

玩游戏有点晚了,但就是这样

self.attribute_names

为我做这项工作。

于 2016-08-26T12:20:21.057 回答