2014-09-01 2 views
0

Я хотел бы знать, можно ли каким-либо образом вставить Rails через ActiveRecord, не пройдя через точку сохранения. Итак, прямо вставьте (и зафиксируйте).Сохранение Rails без Savepoint (прямое сохранение/создание)

Проблема заключается в том, что если есть исключение, я не хочу, чтобы сохранение/создание в рамках одной транзакции также было откатами. Я пробовал несколько часов искать его, но не знаю, как это сделать.

Моя база данных в разработке - SQLite, я считаю, что в спасении должно быть что-то сверкающее.

EDIT: Код

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 для метода, который вы хотели бы создать, если вы должны);) –

+0

ничего не представляете, просто .create. Но иногда исключение вызывается из-за тайм-аута, и я не хочу, чтобы мои данные были откатами. – user3551335

+0

Для нас, чтобы помочь вам ... нам действительно нужно это увидеть. Ваше словесное описание ясно в вашей голове ... но не в нашем;) –

ответ

0

Согласно моему пониманию, Вы должны сохранить запись, хотя есть какая-либо ошибка проверки.

Попробуйте использовать Model.save(:validate => false), это сохранит вашу запись, хотя при сохранении записи вы получите какую-либо ошибку проверки.

+0

ошибка проверки не существует, но исключение может быть повышаться, и это не имеет никакого отношения к проверке. – user3551335

Смежные вопросы