删除不会在关联

时间:2016-12-06 08:27:03

标签: ruby-on-rails

我有3个型号。例如:a,b,c

a:
has_many: bs

b:
belongs_to: a
belongs_to: c

c:
has_many: bs

所以,现在问题是当我删除与c相关联的b中的记录时,更改会反映在b中,但不会反映在a中。< / p>

由于a.b.c被删除,预期更改c值为空。但它不是空的,仍然显示早期值。

当我手动更新b中的特定记录并检查a.b.c的值时,它为空。

那么,有什么解决方法可以解决这个问题吗? 像重装或刷新的东西?

感谢。

PS:我正在使用activescaffolding来执行操作。

model c: 
has_many: bs, :dependent => :nullify

以上一行解决了我的问题。 :d

2 个答案:

答案 0 :(得分:0)

当你有一个has_many关联时,你没有外键,所以你需要告诉对方的另一方要自我毁灭。

您可以使用dependent: destroy关联中的has_many限定符来执行此操作。例如,如果您有:

class Author < ApplicationRecord
  has_many :articles, dependent: :destroy
end

class Article < ApplicationRecord
  belongs_to :author
end

然后你可以做

author.destroy

所有Articlesauthor的{​​{1}}都将被销毁。

答案 1 :(得分:0)

post.rb

class Post < ActiveRecord::Base
    has_many :comments , dependent: :destroy 
end

comment.rb

 class Comment < ActiveRecord::Base
      belongs_to :post
 end

当你销毁帖子时,销毁与同一帖子相关的评论。

post.destroy