删除用户及其帖子

div*_*vya 1 ruby ruby-on-rails ruby-on-rails-5

我有两个模型 - 用户和邮政.用户has_many :posts和帖子belongs_to :user.我想删除用户时自动删除用户的帖子.我怎样才能做到这一点?我对红宝石很新..

class User < ApplicationRecord
  has_many :posts
end

class Post < ApplicationRecord
  belongs_to :user
end

class UsersController < ApplicationController
  def destroy
    @user = User.find_by(id:params[:id])
    @user.posts
    @user.destroy
  end
end
Run Code Online (Sandbox Code Playgroud)

我已经尝试了上面的代码,但仍然只删除了用户,而不是他的帖子.提前致谢!

Vas*_*isa 7

你需要dependent选择has_many:

class User < ApplicationRecord
  has_many :posts, dependent: :destroy
end
Run Code Online (Sandbox Code Playgroud)

有了它,您只删除了所需的用户,他的帖子会自动销毁

def destroy
  @user = User.find_by(id: params[:id])
  @user.destroy
end
Run Code Online (Sandbox Code Playgroud)

请在指南中阅读更多相关信息