【问题标题】:How to write contents of a rails database to external file如何将rails数据库的内容写入外部文件
【发布时间】:2012-03-27 23:19:29
【问题描述】:

我正在尝试让 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

有人可以帮忙吗?谢谢。

【问题讨论】:

  • 您可能会发现运行script/console,然后运行require 'user' ; User.all() 很有指导意义。

标签: sql ruby-on-rails database external


【解决方案1】:

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

因此,您需要弄清楚如何将您的用户列表转换为可以写入文本文件的某种形式,这称为序列化。啊,但是以什么格式? XML? JSON?亚美尔? ... 还是可怕的 CSV 格式?有内置的类可以将 ActiveRecord 对象转换为各种格式,还有 gems 来处理其他格式。所以我假设你会调用一个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

您可能需要在每一行的末尾添加一个换行符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-04
    • 2023-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多