view app/models/paste.rb @ 83:ae360c3b0bb0

Disable explain when using jruby because it's not supported. The patch for this support exist but for some reason still not included in latest release of the jdbc adapter. Reference: https://github.com/jruby/activerecord-jdbc-adapter/pull/206
author Edho Arief <edho@myconan.net>
date Mon, 15 Oct 2012 03:45:18 -0700
parents 7bb46d9febad
children a9dba6a3008b
line wrap: on
line source

class Paste < ActiveRecord::Base
  attr_accessible :paste
  before_validation :paste_limit
  before_validation :convert_newlines
  before_validation :set_paste_hash
  validates :paste, :paste_hash, :ip, :presence => true
  validates :paste, :length => { :maximum => 1_000_000 }

  def set_paste_hash
    self.paste_hash = Digest::SHA512.hexdigest("#{paste}\n")
  end

  def convert_newlines
    self.paste = self.paste.to_s.gsub("\r\n", "\n").gsub("\r", "\n")
  end

  def paste_limit
    ip_post_recent_count = self.class.where(:ip => self.ip).where('created_at > ?', Time.now - 1.hour).count
    errors.add :base, :limit if ip_post_recent_count > 100
  end

  def self.fix_all
    self.all.each do |p|
      p.save
    end
  end
end