gpt4 book ai didi

sql - 如何将rails数据库的内容写入外部文件

转载 作者:搜寻专家 更新时间:2023-10-30 19:46:29 25 4
gpt4 key购买 nike

我正在尝试让 Rails 将我的数据库内容发送到外部文本文件。我希望每次创建新用户时都这样做。

但是,当我尝试在我的 user.rb 模型文件中执行以下操作时,

before_save :write_data

def write_data()
File.open("data.txt", "w") do |myfile|
myfile.write(User.all)
end
end

它不写入数据库的实际内容,而是显示类似这样的内容

User:0x109858540

有人可以帮忙吗?谢谢。

最佳答案

User.all 返回一个 ruby​​ 对象,write 方法可能会说“嘿,我期待一个字符串,这不是一个,所以我将调用 to_s 方法”。

因此,您需要弄清楚如何将您的用户列表转换成某种可以写入文本文件的形式,这称为序列化。啊,但是以什么格式呢? XML? JSON?山药? ... 还是可怕的 CSV 格式?有内置的类可以将 ActiveRecord 对象转换为各种格式,还有用于处理其他格式的 gem。所以我假设您将调用 to_something 方法。

此外,User.all 意味着您要将整个用户表(每条记录)写入相应的文件。 (我想你可能想问问自己为什么,但那是另一个话题)。因此,您可能需要遍历每个用户记录。

代码可能看起来更像

def write_data   # It's ruby -- don't need no stinkin' empty parenthesis!! :-)
my_file = File.open("data.txt", "w")
User.all.each do |u|
my_file.write u.to_something
end
end

您可能需要在每行末尾换行。

关于sql - 如何将rails数据库的内容写入外部文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9899090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com