我是红宝石的新人,所以请原谅我的顽皮。
我有一个类“User”,它有方法创建并显示所有用户需要在CSV文件中保存“用户”数据
这就是我试图做的事情
cmd & { wait $! | cmd2; }
当我打电话
{ cmd & wait $! ; } | cmd2
它返回我的用户数组中的数组,但是在调用时
class User
attr_accessor :name, :age, :email
def initialize(name:, age:, email:)
@name = name
@age = age
@email = email
end
def create
@users = [@name, @age, @email]
end
def self.all
ObjectSpace.each_object(self).map(&:create)
end
def self.save_to_csv
CSV.open(users.csv, "w") do |csv|
@users.each { |i| csv.puts "#{i.name}, #{i.age}, #{i.email}" }
end
end
end
它显示我的错误
User.all
请帮助它如何正确地进行
答案 0 :(得分:0)
User.all
返回一个包含User及其属性的所有实例的数组,它是一个数组,并且您没有为Array对象定义save_to_csv
。
您可以尝试User.save_to_csv
,这是打开CSV文件并在其上写下用户信息的类方法,但还有其他问题,其中包括'}&#39}。您的班级中没有@users
个变量,因此它会取nil
的值,而each
的{{1}}方法不是nil:NilClass
。
所以我认为您可以使用all
方法访问所有用户,然后进行迭代。
在此之后,您可以使用用户的数据推送到CSV文件中排列数组:
def self.save_to_csv
CSV.open('users.csv', 'w') do |csv|
all.each { |user| csv << user }
end
end
注意csv.puts
无法工作。