私はuser has_many agents
とagent belongs_to user
というユーザーとの関連付けを持っています。 のレールコンソールでは、特定のシナリオをテストするために別のユーザーを使用しようとしています。エージェントを持たないユーザーが必要なので、user.agents
を削除します。 私はuser.agents.map(&:destroy)
を試しましたが、ActiveRecord::StaleObjectError: Attempted to delete a stale object
.iがuser.agents.delete_all
を試したとしてもエラーが出ますが、それでもwork.canはありません。レールコンソールのコマンドでユーザエージェントを削除します。それはすべてのRailsの魔法(コールバックなど)を経由するのですべてのレールコンソールを削除してください
8
A
答えて
18
方が良い
user.destroy #For a single record
user.agents.destroy_all #For a collection
0
ActiveRecord::StaleObjectError
をdestroy
を使用再び削除しようとする前に、その上にあなたが持っているすべてのロックを外し、Optimistic lockingためです。他の誰かがシステムを使用しているかどうかを確認するか、開いているフォームを送信してください。
5
あなたは.destroy_all
メソッドを探しています。指定されたコレクションのすべてのレコードを破棄します。 したがってuser.agents.destroy_all
は、user.agents
の空の配列を返します。
.delete_all
はクラスメソッドであり、特定の条件に一致するレコードを削除するため、使用できませんでした。このように、Agent.delete_all(condition)
。条件なしで使用すると、一致するテーブルからすべてのレコードが削除されます。
.destroy
メソッドはインスタンスメソッドです。彼らはオブジェクトをインスタンス化し、それを消去する前にコールバックを実行します。 .delete
メソッドはクラスメソッドであり、オブジェクトを直接消去します。
1
これは私
user.agents.find_each(&:destroy)
関連する問題
- 1. すべてのdjango.contrib.messagesを削除してください
- 2. Windows CMDのいくつかのファイルを除いて、パス内のすべてを削除してください
- 3. テーブル内の特定のクラスをすべて削除してください
- 4. `bookdown :: gitbook`からすべてのテーブルCSSを削除してください
- 5. Postgresデータベースからすべての機能を削除してください
- 6. mysqlテーブルの重複をすべて削除してください
- 7. GreasemonkeyスクリプトからすべてのGoogle Cookieを削除してください
- 8. マップ上のすべての注釈を削除しないでください
- 9. JavaSoftのすべてのサブレジストリキーを検索し、その結果をすべて削除してください
- 10. 空白と空白をすべて削除してください
- 11. MSDeploy(Visual Studio)でApp_Dataフォルダを削除しないでください。その他のものはすべて削除してください。
- 12. R環境から特定の項目を除くすべてのものを削除してください。
- 13. NN最新のエントリだけを残して残りの部分をすべて削除してください
- 14. カーソルを削除してパフォーマンスを改善してください
- 15. 削除されたファイルをトラッキングから削除してください。
- 16. 削除するNetweaverのバージョンを選択してください
- 17. X日以上経過しているすべてのブランチを削除してください
- 18. 配列に含まれていないものをすべて削除してください
- 19. ggplotの伝説の1つを削除してください
- 20. オプションとoptgroupの間のスペースを削除してください
- 21. MATLABの同じ値の列を削除してください
- 22. キューの最後の要素を削除してください
- 23. 2列を除くすべての行を選択してください
- 24. 特定の列を除くすべてを選択してください
- 25. socket.Close()プログラムを停止する(削除してください)
- 26. 削除してみてください。Pythonでパスブロック
- 27. jQueryで「空の」段落を削除してください
- 28. 最後のコミットとプッシュを削除してください
- 29. componentDidMountのbackgroundImageを削除してください
- 30. サイトのドメイン名からazurewebsitesを削除してください
私は 'user.agents'を破壊したいと私は' user.agents.destroyを試してみましたが、それは私にエラーを与えるために働きます。 –
それは 'user.destroy'か' user.agents.destroy_all'です。単一のレコードの最初の1つの動作、コレクションの2番目の動作 – Benj