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

@@ -0,0 +1,32 @@
class CreateFks < ActiveRecord::Migration
def self.add_fk(table, fields, reference, cascade = true)
sql = "alter table #{table} add foreign key (#{fields}) references #{reference}"
sql = sql + " on update cascade on delete cascade" if cascade
execute sql
end
def self.up
add_fk :attachments, :course_id, :courses
add_fk :courses_users, :user_id, :users
add_fk :courses_users, :course_id, :courses
add_fk :events, :created_by, :users
add_fk :events, :course_id, :courses
add_fk :log_entries, :course_id, :courses
add_fk :log_entries, :user_id, :users
add_fk :messages, :sender_id, :users
add_fk :wiki_pages, :course_id, :courses
add_fk :wiki_pages, :user_id, :users
add_fk :wiki_page_versions, :wiki_page_id, :wiki_pages
add_fk :wiki_page_versions, :course_id, :courses
add_fk :wiki_page_versions, :user_id, :users
end
def self.down
end
end

View File

@@ -0,0 +1,13 @@
class MoreParanoid < ActiveRecord::Migration
def self.up
add_column :courses, :deleted_at, :datetime
add_column :log_entries, :deleted_at, :datetime
add_column :users, :deleted_at, :datetime
end
def self.down
add_column :courses, :deleted_at
add_column :log_entries, :deleted_at
add_column :users, :deleted_at
end
end

View File

@@ -9,7 +9,7 @@
#
# It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 30) do
ActiveRecord::Schema.define(:version => 32) do
create_table "attachments", :force => true do |t|
t.string "file_name", :null => false
@@ -22,11 +22,12 @@ ActiveRecord::Schema.define(:version => 30) do
end
create_table "courses", :force => true do |t|
t.string "short_name", :null => false
t.string "full_name", :null => false
t.text "description"
t.string "code", :default => "CK000", :null => false
t.integer "period", :default => 1, :null => false
t.string "short_name", :null => false
t.string "full_name", :null => false
t.text "description"
t.string "code", :default => "CK000", :null => false
t.integer "period", :default => 1, :null => false
t.datetime "deleted_at"
end
add_index "courses", ["short_name"], :name => "index_courses_on_short_name", :unique => true
@@ -52,6 +53,7 @@ ActiveRecord::Schema.define(:version => 30) do
t.integer "version"
t.integer "target_id"
t.string "type"
t.datetime "deleted_at"
end
create_table "messages", :force => true do |t|
@@ -71,8 +73,8 @@ ActiveRecord::Schema.define(:version => 30) do
t.datetime "updated_at"
end
add_index "sessions", ["updated_at"], :name => "index_sessions_on_updated_at"
add_index "sessions", ["session_id"], :name => "index_sessions_on_session_id"
add_index "sessions", ["updated_at"], :name => "index_sessions_on_updated_at"
create_table "users", :force => true do |t|
t.string "login", :null => false
@@ -88,6 +90,7 @@ ActiveRecord::Schema.define(:version => 30) do
t.string "login_key"
t.boolean "admin", :default => false, :null => false
t.string "secret", :null => false
t.datetime "deleted_at"
end
create_table "wiki_page_versions", :force => true do |t|