Posts Tagged ‘registros’

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

Ruby on Rails selecionando registros randomicamente (Random)

Postado em 24 jan 2009
Categoria(s) Ruby on Rails

Digamos que você queira exibir banners aleatórios na home da sua aplicação, você poderia fazer algo assim:

1
2
3
4
5
6
7
8
class HomeController < ApplicationController
 
  def index
    offset = rand(Banner.count(:all, :conditions => "is_active IS TRUE"))
    @banner = Banner.find :first, :conditions => "is_active IS TRUE", :offset => offset
  end
 
end

Acredito que dessa forma funcione em todos os banco de dados.

Existe outras formas de seleção randômica de registros através de order by, mas isso muda de banco de dados para banco de dados, para enteder mais leia: http://wiki.rubyonrails.org/rails/pages/HowtoSelectRandomRecords.

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

  • Share/Bookmark