我有一個模型,我通過表單嚮導進行更新。在最後一步中,我想用表單數據更新對象,然後在模型中調用回調函數將數據推送到外部API。我遇到的問題是finall步驟將數據保存在兩個事務中。Rails更新對象創建兩個數據庫事務
# controller
def update
@business = current_user
@loanapplication = @business.loan_applications.last
@loanapplication.update_attributes(loan_application_params(step))
params[:loan_application][:status] = 'active' if step == steps.last
render_wizard @loanapplication
end
# Model
# Callbacks
after_commit :create_salesforce_loan_application, :on => :update
def create_salesforce_loan_application
if self.status == 'active'
puts "create salesforce function running"
# Updating business column
self.business.update_column(:state, 1)
end
end
數據庫事務
[paperclip] saving XXX.xlsx
[AWS S3 200 0.101161 0 retries] put_object(:acl=>:public_read,:bucket_name=>"",:content_length=>29467,:content_type=>"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",:data=>Paperclip::UploadedFileAdapter: FX - Competitive Analysis.xlsx,:key=>"XX.xlsx")
(0.4ms) COMMIT
create salesforce function running
SQL (1.3ms) UPDATE "users" SET "state" = 1 WHERE "users"."type" IN ('Business') AND "users"."id" = 55
(0.2ms) BEGIN
(0.2ms) COMMIT
create salesforce function running
SQL (1.3ms) UPDATE "users" SET "state" = 1 WHERE "users"."type" IN ('Business') AND "users"."id" = 55
兩個提交正在在我的模型火回調兩次,如果我能想出如何保存更新模型中的數據一次,然後我的回調只會觸發一次。有什麼方法可以找出導致兩次提交的原因?
您使用哪個版本的導軌?我發現這個:[link](https://github.com/rails/rails/issues/8937)報告你的問題。 – GeekRiky 2015-02-10 00:13:42
@RiccardoDegan我正在使用rails 4.1.0 – Questifer 2015-02-10 00:15:08
'':create_salesforce_loan_application''被調用兩次,因爲對象在進程中更新兩次。你能否驗證沒有其他回調導致對象更新兩次?也許''paperclip''在將文件保存到AWS後執行此操作? – dgilperez 2015-02-10 00:25:23