【问题标题】:Rails 4: JSON backup back to Postgresql DBRails 4:JSON 备份回 Postgresql DB
【发布时间】:2016-08-30 23:11:01
【问题描述】:

我在从 JSON 备份文件重新创建我的应用程序数据库时遇到问题。

我现在要做的是从文件中的 rake 任务读取行创建所有记录并渲染 json,例如:

  new_record = key.camelize.constantize.new(hs['key'])
  new_record.save

问题是我不能跳过所有模型的回调,以确保我没有在那里创建任何 dup 内容。 .camelize.constantize.skip_callback(:after_create) 只是不工作给我一个错误undefined method '_after_create_callbacks' for #<Class:

这里有两个问题:

1) 有没有其他方法可以跳过 AR 回调? 2) 除了 SQL 查询之外,还有其他选项可以从 JSON 重新创建数据库吗?

【问题讨论】:

    标签: ruby-on-rails ruby json postgresql


    【解决方案1】:

    1。跳过回调

    您可以要求 AR 在更改记录时跳过 validation 回调,如下所示:

    new_record.class.skip_callback(:create, :after, :specific_callback)
    new_record.save
    

    2。将 JSON 导入 PSQL

    由于您的数据采用 JSON 格式,因此没有神奇的方法可以将其导入您的数据库。但是,Postgres 允许您使用 SQL 轻松导入它,如this SO answer 所示。此外,许多其他人有written utilities 让您的生活更轻松。

    【讨论】:

    • 谢谢,我会更仔细地检查第二个 :) 第一个呢 - 我不需要跳过验证,转储中的数据是有效的,我需要跳过 after_create/after_save 回调以不重新创建一些连接的记录(转储中已经存在)。
    • 啊……抱歉,还在醒来。度过了一个漫长的夜晚 :) 使用 skip_callback 我认为您需要这样称呼它:skip_callback :create, :after。更新了我的答案。
    猜你喜欢
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    相关资源
    最近更新 更多