Связанная запись не удаляется в Rails - PullRequest
1 голос
/ 04 апреля 2011

Я пытаюсь связать набор загруженных картинок с постом. В моем контроллере я использую следующий код:

image_uploads = params[:image_uploads]
iu = ImageUpload.find(image_uploads)
@post.image_uploads = iu

Хотя это делает загруженные изображения доступными из @post.image_uploads, я думаю, что они не связывают эти изображения с сообщением, потому что при удалении сообщения загрузки изображений не удаляются - даже если я использовал :dependent=>:destroy за их отношения.

> Post.first.delete
=>[]
> ImageUpload.all
=> [#<ImageUpload id: 3 ...>] 

А это модель:

class Post < ActiveRecord::Base
 has_many :image_uploads, :dependent => :destroy

end

class ImageUploads < ActiveRecord::Base
 belongs_to :post

end

Что я могу сделать, чтобы убедиться, что каскадное удаление работает?

Ответы [ 2 ]

5 голосов
/ 04 апреля 2011

Попробуйте вместо этого:

Post.first.destroy

destroy вызывает определенные обратные вызовы, тогда как delete удаляет запись напрямую с использованием SQL без создания объекта AR.

0 голосов
/ 04 апреля 2011

То, что вы делаете, мне кажется правильным. У вас есть пост с загрузкой изображений в зависимости от поста, и вы должны удалить их при удалении поста. Я могу ошибаться, но я ничего не вижу.

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

У вас есть модель, которая заканчивается на S. Не очень хорошая идея. Сделайте себе одолжение и измените ImageUpload, пожалуйста:)

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