2012-02-17 12 views
3

削除のように見える&は、両方のデータベースをhas_manyを扱うときに削除します。とにかくこれをしないのですか?言い換えれば、メソッドに渡す前にhas_mnayコレクションをトリムしたいのですが、私の変更をdbに永続させたくありません。コンソール上でそれをしようと、私がメソッドまでのアカウントをチェックするだけ渡したいように、私はデータベースから削除せずにhas_manyからレコードを削除しますか? (レール2.3.5)

second_acct = users.accounts[1] 
users.accounts.delete(second_acct) 

私のユースケースは次のようになり何かをするとき、すぐに削除するように思えるので、私はからこれらのアカウントを削除したいですユーザー。

+0

ここで明確にするために、私はデータベースに触れたくない、私はメモリ内の関係を削除したいだけです – Joelio

+1

あなたはこれを行う方法を見つけましたか? –

答えて

0
second_acct = users.accounts[1] 
second_acct.update_attribute(:user_id, nil) 

これは機能するはずです。

またはこの:あなたの会合が設定されている方法

second_acct.user = nil 
second_acct.save 
-2

collection.delete(object, …) 
    Removes one or more objects from the collection by setting their foreign keys to NULL. Objects will be in addition destroyed if they’re associated with :dependent => :destroy, and deleted if they’re associated with :dependent => :delete_all. 

あなたのレコードが削除されるとのみ関連付けがクリアされたくないのであれば、:dependent => :destroyまたは:dependent => :delete_allオプションを削除してください。

+0

私はdepend =>:destroyを持っています。本当にそれらを削除すると、dbからクリアされます。上記の場合、私はdbに触れたくありません。メモリ内のコレクションから削除してください。 – Joelio

関連する問題