Sql 如何将rails数据库的内容写入外部文件
我正在尝试让rails将数据库的内容发送到外部文本文件。 我希望在每次创建新用户时都这样做 但是,当我尝试在user.rb模型文件中执行以下操作时Sql 如何将rails数据库的内容写入外部文件,sql,ruby-on-rails,database,external,Sql,Ruby On Rails,Database,External,我正在尝试让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 有人能帮忙吗
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对象转换为各种格式,还有gems处理其他格式。因此,我假设您将调用一个来\u 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
您可能需要在每行末尾添加一个换行符。您可能会发现运行
script/console
,然后运行require'user'很有帮助;User.all()
。