我正在尋找一種方法來存儲在更新或創建操作中生成的SQL字符串。我試過在update_attributes
的末尾嘗試追加.to_sql
,但它會返回TrueClass
錯誤(或類似的內容)。有什麼我失蹤了嗎?to_sql不工作update_attributes或.save
回答
這些方法都返回一個布爾值。你不能在布爾值上調用to_sql
。
這就是我的想法。有什麼辦法可以捕獲執行的sql嗎?顯然它會在日誌文件中得到輸出,但我正在執行時將字符串存儲在數據庫中。 –
簡而言之 - 您需要重寫ActiveRecord執行方法。在那裏你可以添加任何用於記錄的邏輯。
connection = ActiveRecord::Base.connection
class << connection
alias :original_exec :execute
def execute(sql, *name)
# try to log sql command but ignore any errors that occur in this block
# we log before executing, in case the execution raises an error
begin
file = File.open(RAILS_ROOT + "/log/sql.txt",'a'){|f| f.puts Time.now.to_s+": "+sql}
rescue Exception => e
;
end
# execute original statement
original_exec(sql, *name)
end
end
學分:
就像這個人在原帖中說的那樣,你會把這個放在哪裏? –
你可以把它放在任何你喜歡的地方,真的。就我個人而言,我認爲它的初始化是有道理的,但這是一個品味問題。 – MrTheWalrus
感謝您的回覆。假設我將它放入初始化程序中,我將如何「調用」它以便可以記錄查詢?上面的代碼對我來說意味着每次都會運行。我期望在許多控制器中的某些操作上運行這樣的方法。 –
- 1. Rails ActiveRecord update_attributes!不工作
- 2. to_sql不起作用
- 3. excel .save()2007年不工作
- 4. 鋰:文檔 - > save()或Record-> save()的工作方式
- 5. 嵌套模型,update_attributes不工作
- 6. 貓鼬實例.save()不工作
- 7. Rails update_attributes不起作用
- 8. 何時使用save !,請創建!和update_attributes!在Rails中?
- 9. 將save方法與update_attributes結合使用。這是常見的嗎?
- 10. Grails .save()不起作用
- 11. spring save或更新
- 12. 的Rails:update_column作品,但不是update_attributes方法
- 13. AngularFire $ save函數是如何工作的?
- 14. model.CharField('blank = False')與save()一起工作嗎?
- 15. .save()不
- 16. 加速Pandas to_sql()?
- 17. ASP - 或不工作
- 18. MySQL或不工作
- 19. containsKey或不工作
- 20. 爲什麼meteor安裝npm --save angular-ui-grid不工作?
- 21. 爲什麼.save工作,貓鼬,但不與UPSERT
- 22. 貓鼬.save()不是沒有回調工作
- 23. model-> save()在Yii中不工作 - >顯示'錯誤'
- 24. 或操作數不工作
- 25. Grails:調試save()或驗證()
- 26. p:commandbutton不工作或不叫
- 27. IDE可以在多模塊maven項目中使用save-on-save工作
- 28. mongoose .save()不會進入.save()函數
- 29. slideDown不工作或工作像.show
- 30. Magento model-> save()不起作用
我不認爲這有可能是因爲我不的事情,因爲AREL從來就更新/刪除邏輯糾正我,如果我錯了 – Viren
你爲什麼試圖將SQL存儲在數據庫中? –
因此,我稍後可以將其作爲API端點引用,以返回在「x」日期之間運行的所有查詢,然後讓這些查詢在使用sqlite(主數據庫爲mysql)的移動應用程序上運行。基本上是一種將移動應用程序與mysql數據庫中的內容同步的方法。 –