在模型中创建模型

时间:2011-06-24 16:49:36

标签: ruby-on-rails ruby-on-rails-3 validation

我有两个模型:ReportSinglePage。 用户可以上传PDF报告。此报告的每个页面都会变成一个图像,并保存到自己的single_page-instance中。

目前,我正在保存报告(在我的控制器中),如果保存成功,我会为此报告创建single_pages(也来自控制器内)。

我不喜欢这种方法,因为这种逻辑应该在模型本身内处理。另一个问题是,无论是否可以创建报告的single_pages,都会创建报告。当然,我可以抓住控制器,但我认为这是一个不好的做法。

我真正希望实现的是:

  1. 用户上传PDF报告
  2. 报告被拆分,每个页面都会变成图像
  3. 每个图像都保存到自己的single_page-instance中
    • 注意:single_pages都是在单个方法中创建的,如果无法创建一个或多个页面,则返回false。
  4. 只有创建了所有single_pages,才会保存报告。
  5. 我试图覆盖Report-Model中的initialize-method,但我没有让这种依赖工作。报告模型本身有错误,或者无论与single_pages有什么关系,它都会被保存。

    非常感谢任何帮助。

    谢谢,Mandi

2 个答案:

答案 0 :(得分:1)

您是否在before_create上尝试过任何可用的回调,例如before_saveReport

答案 1 :(得分:1)

您可以将所有保存包装在transaction

另外,你没有提到它,但我假设你在Reports和SinglePages之间有亲子关系?如果是这样,那么如果您构建(而不是保存)页面然后保存报告,rails将尝试保存从属子项,如果子项无法保存,则不会保存父项。