我有两个模型:Report
和SinglePage
。
用户可以上传PDF报告。此报告的每个页面都会变成一个图像,并保存到自己的single_page-instance中。
目前,我正在保存报告(在我的控制器中),如果保存成功,我会为此报告创建single_pages(也来自控制器内)。
我不喜欢这种方法,因为这种逻辑应该在模型本身内处理。另一个问题是,无论是否可以创建报告的single_pages,都会创建报告。当然,我可以抓住控制器,但我认为这是一个不好的做法。
我真正希望实现的是:
我试图覆盖Report-Model中的initialize-method,但我没有让这种依赖工作。报告模型本身有错误,或者无论与single_pages有什么关系,它都会被保存。
非常感谢任何帮助。
谢谢,Mandi
答案 0 :(得分:1)
您是否在before_create
上尝试过任何可用的回调,例如before_save
或Report
?
答案 1 :(得分:1)
您可以将所有保存包装在transaction。
中另外,你没有提到它,但我假设你在Reports和SinglePages之间有亲子关系?如果是这样,那么如果您构建(而不是保存)页面然后保存报告,rails将尝试保存从属子项,如果子项无法保存,则不会保存父项。