2017-04-26 115 views
0

我想重写一个has_many关联getter使用方法。删除相关的记录删除原来的Rails中的has_many关联getter后

我有一个has_many卡通过连接表user_cards协会。我在模型中添加了一个方法...尝试完全覆盖条件。

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

user_cards是多态的所以有source,并从联想呼叫source_type

吸气剂看起来没问题......正如所料。

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

但是......相关结果的简单删除正在删除原来的,而不仅仅是连接表的记录,这是非常可怕的,会破坏应用程序。

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

以上从数据库中完全删除@card对象......我期待它删除@user.user_cards记录。

我不熟悉重写协会getter ...请帮助。谢谢。

+0

的可能的复制[如何使用依赖于:在轨摧毁?](http://stackoverflow.com/questions/29560805/how-to-使用依赖,破坏式护栏) – yoones

回答

0

解决此问题的简单方法是直接销毁UserCard

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

但确保UserCard没有dependent: destroy

相关问题