Posts Tagged ‘excluir’

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

Rsync como excluir diretório .svn

Postado em 27 mar 2009
Categoria(s) Debian, Ruby, Ruby on Rails, Ubuntu

No Railscasts número 149 que trata sobre Rails Engines (http://railscasts.com/episodes/149-rails-engines), é criado uma rake task para fazer a sincronização dos arquivos do plugin para o projeto principal.

Eu tive um problema nessa task por causa do SVN, eu uso ele para fazer o versionamento do meu projeto.

O problema é que os diretórios .svn são copiados do plugin para o projeto principal no momento do rsync, e isso gerá alguns problemas no SVN.

Para não serem mais sincados os diretórios .svn no momento do rsync eu adicionei o parâmetro –cvs-exclude que serve tanto para CVS como SVN.

1
2
3
4
5
6
7
8
# vendor/plugins/blogify/tasks/blogify_tasks.rake
namespace :blogify do
  desc "Sync extra files from blogify plugin."
  task :sync do
    system "rsync -ruv --cvs-exclude vendor/plugins/blogify/db/migrate db"
    system "rsync -ruv --cvs-exclude vendor/plugins/blogify/public ."
  end
end

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

  • Share/Bookmark