2016-12-06 11 views
0

私には3つのモデルがあります。例の場合:私はbに関連付けられているc内のレコードを削除すると、Bは、そう削除は関連付けに反映されません

a: 
has_many: bs 

b: 
belongs_to: a 
belongs_to: c 

c: 
has_many: bs 

C、今問題は、変更がbではなくaに反映されています。

a.b.cの値は、cが削除されたため、nullです。しかし、それはヌルではなく、以前のように値を示しています。

bの特定のレコードを手動で更新し、a.b.cの値をチェックすると、nullになります。

これを解決する方法はありますか? リロードやリフレッシュのようなもの?

ありがとうございました。

PS:私はアクセルスケーリングを使用して行動を起こしています。

SOLUTION

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

線の上には、私の問題を修正しました。 :D

+0

にhas_many:BS、依存:破壊 –

+0

依存:破壊する - これは値を無効化するのではなく、全体のレコードを削除しないのですか? – Mounika

+0

多態性を考慮する - http://guides.rubyonrails.org/association_basics.html#polymorphic-associations – marmeladze

答えて

0

アソシエーションがある場合は、外部キーを所有していないため、アソシエーションの反対側に自身を破壊するように伝える必要があります。

has_manyアソシエーションのdependent: destroy修飾子でこれを行うことができます。たとえば、あなたが持っている場合:

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

class Article < ApplicationRecord 
    belongs_to :author 
end 

は、あなたは

author.destroy 

authorさんauthor_id破壊されると、すべてのArticlesを行うことができます。

+0

こんにちは、私は関連の最初のレベルで問題はありません。 問題は次のとおりです。著者が削除されると、記事が正常に更新されます。 その記事のbelongs_to:groupとしましょう。 そのグループの記事の作者は無効ではありません。 – Mounika

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 
関連する問題