DB: Integridade referencial

This commit is contained in:
2008-03-06 05:43:56 -03:00
parent e5bc6024ba
commit c58684c31c
12 changed files with 88 additions and 68 deletions

View File

@@ -34,6 +34,7 @@ class EventsController < ApplicationController
end
def new
@event.time = Time.now
end
def create

View File

@@ -25,14 +25,12 @@ class Attachment < ActiveRecord::Base
self.size = new_file.size
end
# Limpa o nome do arquivo
protected
def sanitize(filename)
filename = File.basename(filename)
filename.gsub(/[^\w\.\-]/, '_')
end
# Verifica se o arquivo é válido
def validate
if @tmp_file
errors.add("file") if @tmp_file.size == 0

View File

@@ -13,23 +13,32 @@
class Course < ActiveRecord::Base
has_many :attachments, :order => "file_name"
has_many :wiki_pages, :order => "position"
has_many :shoutbox_messages,
:class_name => 'CourseShoutboxMessage',
:foreign_key => "receiver_id",
:order => 'id desc'
# Associacoes
has_many :attachments,
:order => "file_name",
:dependent => :destroy
has_many :events,
:order => "time asc",
:dependent => :destroy
has_many :news,
:class_name => 'News',
:foreign_key => "receiver_id",
:order => 'id desc'
:order => "id desc",
:dependent => :destroy
has_many :events, :order => "time asc"
has_many :log_entries,
:order => "created_at desc",
:dependent => :destroy
has_many :log_entries, :order => "created_at desc"
has_many :wiki_pages,
:order => "position",
:dependent => :destroy
# Plugins
acts_as_paranoid
# Validacao
generate_validations
validates_uniqueness_of :short_name
validates_format_of :short_name, :with => /^[^0-9]/
@@ -41,15 +50,6 @@ class Course < ActiveRecord::Base
end
end
def after_destroy
associations = [:attachments, :wiki_pages, :shoutbox_messages, :news, :events]
associations.each do |assoc|
send("#{assoc}").each do |record|
record.destroy
end
end
end
def to_param
self.short_name
end

View File

@@ -15,6 +15,8 @@ class LogEntry < ActiveRecord::Base
belongs_to :user
belongs_to :course
acts_as_paranoid
def reversible?() false end
def to_xml(options = {})

View File

@@ -31,8 +31,8 @@ class WikiDeleteLogEntry < WikiLogEntry
def undo!(current_user)
w = WikiPage.find_with_deleted(target_id)
w.update_attribute(:deleted_at, nil)
w.position = w.course.wiki_pages.maximum(:position) + 1
w.save!
w.position = w.course.wiki_pages.maximum(:position) + 1
w.save!
WikiRestoreLogEntry.create!(:target_id => w.id, :user_id => current_user.id,
:course => w.course)
end

View File

@@ -31,10 +31,7 @@ class User < ActiveRecord::Base
attr_protected :id, :salt
attr_accessor :password, :password_confirmation
has_many :shoutbox_messages,
:class_name => 'UserShoutboxMessage',
:foreign_key => "receiver_id",
:order => 'id desc'
acts_as_paranoid
def User.find_by_login_and_pass(login, pass)
user = find(:first, :conditions => [ "login = ?", login ])

View File

@@ -15,7 +15,7 @@
%table
- @course.news.each do |n|
%tr[n]
%td.top.aright
%td.top.aright{:width => '1%'}
= n.timestamp.strftime("%d&nbsp;de&nbsp;%B")
%td
.title= link_to h(n.title), course_news_url(@course, n)