2014-09-01 68 views
0

我想知道是否有任何方法可以通过ActiveRecord插入到Rails而无需通过保存点。所以,直接插入(并提交)。没有保存点的Rails保存(直接提交保存/创建)

问题是,如果有异常被抛出,我不希望保存/创建在同一个事务中也被回滚。我尝试了几个小时寻找它,但不确定如何。

我在开发中的数据库是SQLite,我相信在保存时应该有些闪闪发光的东西。

编辑:代码

log = config.model.where(md5: md5).first 
    if log 
    puts "I AM HERE 5A" 
    log.frequency += 1 
    log.save 
    else 
    puts "I AM HERE 5B" 
    config.model.transaction(requires_new: true) do 
     config.model.create!({ 
     md5: md5, 
     level: level, 
     message: message, 
     backtrace: backtrace, 
     class_name: class_name, 
     method_name: options[:method], 
     line: options[:line], 
     file_name: options[:file], 
     parameters: (options[:parameters].blank? ? "" : options[:parameters].inspect), 
     description: options[:description] 
     }) 

    end 
    end 
+1

你能告诉我们一些代码作为你想要的例子吗(如果你愿意的话,使用“magic_save_without_savepoint”作为你想存在的方法);) – 2014-09-01 05:43:35

+0

真的没什么特别的,只是.create。但有时由于Timeout可能会抛出异常,并且我不希望我的数据被回滚。 – user3551335 2014-09-01 05:45:58

+0

为了我们能够帮助你...我们需要真正看到它。您的口头描述在您的头脑中是清楚的......但不在我们的身上;) – 2014-09-01 05:49:00

回答

0

按我的理解,你必须保存记录虽然没有任何验证错误。

尝试使用Model.save(:validate => false)尽管在保存记录时出现任何验证错误,但这会保存您的记录。

+0

没有验证错误,但可能会引发异常并且与验证无关。 – user3551335 2014-09-01 06:52:38