Posts Tagged ‘filhas’

Ruby on Rails ActiveRecord como excluir registros dependentes e arquivos anexados com o Paperclip

Postado em 10 jun 2009
Categoria(s) Ruby on Rails

Digamos que você tenha uma mensagem, e essa mensagem possa ter várias fotos e vídeos relacionadas com ela.

Com o model message.rb da forma abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Message < ActiveRecord::Base
  # associações
  belongs_to :user
  has_many :photos
  has_many :videos
 
  # validações
  # presença
  validates_presence_of :title
  validates_presence_of :content
 
  # tamanho máximo
  validates_length_of :title, :maximum => 255
end

Se você usar Paperclip para anexar as fotos e vídeos, quando você apagar uma mensagem os arquivos de fotos e vídeos iram continuar a existir no disco rígido.

Para forçar que todas as relações filhas sejam apagadas quando você excluir a mensagem, você deve adicionar :dependent => :destroy na declaração has_many, ficando assim:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Message < ActiveRecord::Base
  # associações
  belongs_to :user
  has_many :photos, :dependent => :destroy
  has_many :videos, :dependent => :destroy
 
  # validações
  # presença
  validates_presence_of :title
  validates_presence_of :content
 
  # tamanho máximo
  validates_length_of :title, :maximum => 255
end

Essa alteração força para que todos os dependentes sejam excluídos.

Se você gostou desse texto e acha que ajudou você, me recomende: Recommend Me.

  • Share/Bookmark