Skip to content

Instantly share code, notes, and snippets.

@fidelix
Created December 15, 2013 13:23
Show Gist options
  • Select an option

  • Save fidelix/7973043 to your computer and use it in GitHub Desktop.

Select an option

Save fidelix/7973043 to your computer and use it in GitHub Desktop.
require 'file_size_validator'
class Subtitle < ActiveRecord::Base
belongs_to :title, :inverse_of => :subtitles
belongs_to :user, :inverse_of => :subtitles
belongs_to :season, :inverse_of => :subtitles
has_many :comments, dependent: :destroy, inverse_of: :subtitle
has_many :releases, dependent: :destroy, inverse_of: :subtitle
mount_uploader :sub_file, SubFileUploader
validates :sub_file,
:presence => true,
:file_size => {
:maximum => 1.5.megabytes.to_i,
:minimum => 1.kilobytes.to_i
}
validates_presence_of :title, :lang, :user, :releases
validates :description, length: {
maximum: 500
}
# CUSTOM VALIDATOR para assegurar que não exista uma mesma legenda para o
# mesmo release na mesma língua
# 1. Pega todos os releases que o usuário está enviando
# 2. Encontra todos os releases de mesmo nome
# 3. Verificar se estes releases não estão relacionados a legendas com
# a mesma língua que o usuário está enviando
validate :releases_unique, on: :create
def releases_unique
releases.each do |release|
# REVIEW: Releases.where vai funcionar? releases.each rola se estiver vazio?
Releases.where(:name => release.name).each do |another|
if another.subtitle.lang == self.lang
errors.add(:releases, "O release enviado já existe!")
end
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment