2017-04-26 9 views
0

メソッドを使用してhas_manyアソシエーションゲッターをオーバーライドしようとしています。関連するレコードを削除すると、元のファイルが削除されます.Railsでhas_many関連ゲッターを削除します。

私はカードのためにhas_manyの結合テーブルuser_cardsを介してアソシエーションを持っています。モデルにメソッドを追加しました...条件を完全にオーバーライドしようとしました。

has_many :cards, through: :user_cards, source: :canonical, source_type: 'Primary' 

user_cardsは、多型であるので、関連の呼び出しからsourcesource_typeがあります。

getterは正常に見えます...

def cards 
    Card.where(id: user_cards.pluck(:card_id)) 
end 

しかし...関連付けられたレコード(複数可)の簡単な削除は今、オリジナルを削除しているだけで非常に怖いですし、アプリを破壊することができ、テーブルのレコードを結合していません。

@card = Card.find(1) 
@user.cards.delete(@card) 

は、上記データベースから完全に@cardオブジェクトを削除します...私は@user.user_cardsレコードを削除することを期待しています。

私は、関連ゲッターをオーバーライドするのに慣れていません...助けてください。ありがとう。

+0

が重複する可能性を持っていないことを確認してください[依存使用方法:レールに破壊します?](http://stackoverflow.com/questions/29560805/how-to- use-dependent-destroy-in-rails) – yoones

答えて

0

この問題を解決する簡単な方法は、UserCardを直接破棄することです。

@card = Card.find(1) 
@card.user_cards.where(user_id: @user.id).destroy 

しかしUserCardはのdependent: destroy

関連する問題