我有一個沒有ID列的表。當我嘗試使用ActiveRecord從中刪除時,生成的SQL爲DELETE FROM table_name WHERE ID=NULL
,這顯然不起作用。有沒有辦法使用ActiveRecord從表中刪除,或者至少用佔位符運行原始SQL刪除查詢(所以它不容易受SQL注入攻擊)?如何銷燬沒有ID列的記錄在ruby ActiveRecord中?
17
A
回答
24
您是否嘗試過使用ActiveRecord的delete_all方法?下面是我的一個沙箱的摘錄:
>> customer = Customer.new(:login => 'foo')
=> #<Customer id: nil, status: 0, name: nil, login: "foo", password: nil, salt: nil, api_key: nil, address: nil, town: nil, state: nil, country: "USA", zipcode: nil, balance: #<BigDecimal:1032669b0,'0.0',9(18)>, discount: 0, last_four_cc: nil, auto_renew: false, contact_name: nil, contact_email: nil, domain: "anon.limelock.com", created_at: nil, updated_at: nil>
>> customer.save
=> true
>> Customer.all.count
=> 4
>> Customer.delete_all(:login => 'foo')
=> 1
>> Customer.all.count
=> 3
生成的SQL是DELETE FROM `customers` WHERE (`customers`.`login` = 'foo')
8
相關問題
- 1. 銷燬所有belongs_to協會銷燬的記錄
- 2. Rails 3 public_activity,銷燬記錄
- 3. 爲什麼在銷燬記錄之前沒有出現確認?
- 4. 在Ruby on Rails中,如何在創建一個ID爲3的記錄之前被銷燬?
- 5. ActiveRecord:如何銷燬對象以使其id自由
- 6. 如何使用jQuery銷燬ActiveRecord?
- 7. 銷燬ruby中的變量
- 8. 如何銷燬的Zend_Session_Namespace沒有session_destroy
- 9. ActiveRecord銷燬 - 無例外
- 10. 如何銷燬has_many關聯和連接表記錄?
- 11. 銷燬記錄實際上並沒有將它們刪除
- 12. 一個SQL調用銷燬ActiveRecord中的屬性「a」或「b」的記錄?
- 13. Rails雙重多態依賴:銷燬沒有正確銷燬
- 14. Ruby on Rails-使用鏈接銷燬記錄
- 15. 我可以在我銷燬後重新使用activerecord ID嗎?
- 16. 連接表中的記錄在HABTM關聯中自動銷燬?
- 17. Rails ActiveRecord在相關表中存在id的ActiveRecord返回記錄
- 18. ActiveRecord :: RecordNotFound在控制器#銷燬
- 19. Sequelize:銷燬/刪除表中的所有記錄
- 20. 加入銷燬記錄加入
- 21. 霧和戴恩銷燬記錄
- 22. 在Rails中刪除連接表記錄銷燬
- 23. 查找並銷燬從屬記錄
- 24. 在rails中,如何銷燬'連接表項'而不刪除真實記錄?
- 25. 無法銷燬多對多關係中的記錄
- 26. 額外的「你確定嗎?」在銷燬記錄之前
- 27. 如何在Ruby on Rails中銷燬嵌套的資源實例?
- 28. 如何銷燬表中的所有記錄,包括:其他表中的從屬記錄
- 29. Ruby中對象銷燬的通知
- 30. 銷燬方法沒有開火以銷燬複雜形式的嵌套資源
這是要走的路。我正要回答這個問題。 – 2010-06-05 14:59:15
這不適用於所有情況。我有一個模型遊戲和一個模型AppVersion。遊戲has_many:app_versions。 'Game.first.app_versions.delete_all'產生'DELETE FROM'app_versions'WHERE'app_versions'。''= NULL',這是一個錯誤。 – 2012-02-14 12:53:19
當你在一個關係上使用它時,Rails4.2說在'.delete_all'方法中,只有兩個選項可以傳遞:':nullify',它在foreing_keys和':delete_all'上設置null,它實際上刪除了這些對象。默認值是':nullify'。 – mariowise 2015-05-26 12:43:01