Как мне удалить все экземпляры объекта, который имеет ассоциацию, которая уже была удалена в командной строке в Rails 3? - PullRequest
0 голосов
/ 28 марта 2011

У меня есть модель Comment

Comment(id: integer, body: string, notified: boolean, user_id: integer, stage_id: integer, created_at: datetime, updated_at: datetime) 

Комментарий belongs_to : stage.

Поэтому, когда я назначаю комментарий, скажем с ID12 локальной переменной comment12 в моемКонсоль Rails, я получаю что-то вроде этого:

comment12.stage => #<Stage id: 19, project_id: 8, user_id: 1, name: "Wedding", created_at: "2011-02-25 09:05:35", updated_at: "2011-02-25 09:05:35"> 

Однако, прежде чем я установлю зависимость от ассоциаций, чтобы уничтожить все комментарии, когда этап был удален, у меня осталось несколько ошибочных комментариев в БД.

Итак, как мне удалить все комментарии с консоли Rails, у которых есть stage_id, которого больше не существует?

Есть ли какая-нибудь быстрая команда, которую я могу запустить, чтобы ее было легко сделать?

Спасибо.

1 Ответ

2 голосов
/ 28 марта 2011

Это должно работать:

Comment.joins("LEFT OUTER JOIN stages ON comments.stage_id = stages.id").where("stages.id IS NULL").each do |comment|
  comment.destroy
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...