再帰的な破棄がどのように機能するかについての私の理解を確認してください。
多くの投稿を含むブログ オブジェクトがあります。投稿には、投稿が作成されるたびに作成されるニュースフィード オブジェクトがあります。ブログを削除すると、投稿は削除されますが、投稿のニュースフィード オブジェクトは削除されず、「ゴースト」ニュースフィード オブジェクトが残ります。
モデル > blog.rb
class Blog < ActiveRecord::Base
attr_accessible :description, :title, :user_id, :cover
belongs_to :user
has_many :posts, :dependent => :destroy
end
モデル > post.rb
class Post < ActiveRecord::Base
attr_accessible :blog_id, :content_1, :type, :user_id, :media, :picture, :event_id
belongs_to :blog
belongs_to :user
end
そのため、ブログを破棄するように要求すると、ブログはすべての投稿をピックアップして破棄します。それは素晴らしいことです!しかし、post コントローラーの destroy 関数に、newfeeds のカスタム破棄を呼び出す特別なカスタム コードがあります。それは呼ばれていません。
コントローラー > post_controller.rb
def destroy
@post = Post.find(params[:id])
# Delete Feed on the creation of the post
if Feed.exists?(:content1 => 'newpost', :content2 => params[:id])
@feeds = Feed.where(:content1 => 'newpost', :content2 => params[:id])
@feeds.each do |feed|
feed.destroy
end
end
@post.destroy
respond_to do |format|
format.html { redirect_to redirect }
format.json { head :no_content }
end
end
投稿の destroy 関数のそのコードは呼び出されていないため、newfeed オブジェクトは破棄されていません。依存関係の破棄機能に関する私の理解は間違っていますか?
ニュースフィード オブジェクトは、他のタイプのユーザー アクション (新しい誰かと友達になる、または新しいブログを作成するなど) によってトリガーされるため、ニュースフィードの種類によって区別されるため、特に、ニュースフィードと投稿オブジェクトの間に属している関係と has_many 関係を作成することは避けたいと考えています。 content1 変数。