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)
我已经尝试了上面的代码,但仍然只删除了用户,而不是他的帖子.提前致谢!
你需要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)
请在指南中阅读更多相关信息