DB: Integridade referencial
This commit is contained in:
32
db/migrate/031_create_fks.rb
Normal file
32
db/migrate/031_create_fks.rb
Normal 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
|
||||
13
db/migrate/032_more_paranoid.rb
Normal file
13
db/migrate/032_more_paranoid.rb
Normal 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
|
||||
17
db/schema.rb
17
db/schema.rb
@@ -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|
|
||||
|
||||
Reference in New Issue
Block a user