Удалить пользователя вместе с его сообщениями - PullRequest
0 голосов
/ 13 января 2019

У меня две модели - Пользователь и Пост. Пользователь 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

Я пробовал код выше, но все равно только пользователь удаляется, а не его сообщения. Заранее спасибо!

1 Ответ

0 голосов
/ 13 января 2019

Вам нужна опция dependent для has_many:

class User < ApplicationRecord
  has_many :posts, dependent: :destroy
end

С его помощью вы удаляете только нужного пользователя, его сообщения уничтожаются автоматически

def destroy
  @user = User.find_by(id: params[:id])
  @user.destroy
end

Пожалуйста, прочитайте больше об этом в руководствах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...