我有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
答案 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
所有Articles
与author
的{{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