Skip to content

Commit 50577dc

Browse files
author
Gogs
committed
Define operations on deletion of elements
1 parent 8c58452 commit 50577dc

7 files changed

Lines changed: 24 additions & 24 deletions

File tree

app/controllers/states_controller.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ def show
2020

2121
# PUT /states/:id
2222
def update
23-
@tag.update(state_params)
23+
@state.update(state_params)
2424
head :no_content
2525
end
2626

2727
# DELETE /states/:id
2828
def destroy
29-
@tag.destroy
29+
@state.destroy
3030
head :no_content
3131
end
3232

app/models/document.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
class Document < ActiveRecord::Base
2-
belongs_to :folder
2+
belongs_to :folder, optional: true
33
belongs_to :user
4-
belongs_to :state
5-
belongs_to :person
4+
belongs_to :state, optional: true
5+
belongs_to :person, optional: true
66

77
has_many :documenttags
88
has_many :tags, through: :documenttags

app/models/folder.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ class Folder < ActiveRecord::Base
22
belongs_to :folder
33
belongs_to :user
44

5-
has_many :documents
6-
has_many :folders
5+
has_many :documents, dependent: :destroy
6+
has_many :folders, dependent: :destroy
77

88
def as_json(_options = {})
99
super include: {

app/models/person.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
class Person < ActiveRecord::Base
22
belongs_to :user
33

4-
has_many :documents
4+
has_many :documents, dependent: :nullify
55

66
validates_presence_of :name
77
end

app/models/tag.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
class Tag < ActiveRecord::Base
22
belongs_to :user
33

4-
has_many :documenttags
4+
has_many :documenttags, dependent: :nullify
55
has_many :documents, through: :documenttags
66

77
validates_presence_of :name

db/migrate/20190528071704_create_documents.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ def change
66
t.date :document_date
77
t.string :document_url
88
t.decimal :version
9-
t.references :folder, index: true, foreign_key: true
10-
t.references :user, index: true, foreign_key: true
11-
t.references :state, index: true, foreign_key: true
12-
t.references :person, index: true, foreign_key: true
9+
t.references :folder, index: true, foreign_key: {on_delete: :nullify}
10+
t.references :user, index: true, foreign_key: {on_delete: :cascade}
11+
t.references :state, index: true, foreign_key: {on_delete: :nullify}
12+
t.references :person, index: true, foreign_key: {on_delete: :nullify}
1313

1414
t.timestamps null: false
1515
end

db/schema.rb

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
ActiveRecord::Schema.define(version: 2019_05_28_071907) do
1414

15-
create_table "documents", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
15+
create_table "documents", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
1616
t.string "title"
1717
t.text "description"
1818
t.date "document_date"
@@ -30,7 +30,7 @@
3030
t.index ["user_id"], name: "index_documents_on_user_id"
3131
end
3232

33-
create_table "documenttags", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
33+
create_table "documenttags", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
3434
t.integer "document_id"
3535
t.integer "tag_id"
3636
t.datetime "created_at", null: false
@@ -39,7 +39,7 @@
3939
t.index ["tag_id"], name: "index_documenttags_on_tag_id"
4040
end
4141

42-
create_table "folders", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
42+
create_table "folders", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
4343
t.string "name"
4444
t.integer "folder_id"
4545
t.integer "user_id"
@@ -50,30 +50,30 @@
5050
t.index ["user_id"], name: "index_folders_on_user_id"
5151
end
5252

53-
create_table "people", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
53+
create_table "people", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
5454
t.string "name"
5555
t.integer "user_id"
5656
t.datetime "created_at", null: false
5757
t.datetime "updated_at", null: false
5858
end
5959

60-
create_table "states", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
60+
create_table "states", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
6161
t.string "name"
6262
t.integer "user_id"
6363
t.datetime "created_at", null: false
6464
t.datetime "updated_at", null: false
6565
t.index ["name"], name: "index_states_on_name", unique: true
6666
end
6767

68-
create_table "tags", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
68+
create_table "tags", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
6969
t.string "name"
7070
t.integer "user_id"
7171
t.string "color"
7272
t.datetime "created_at", null: false
7373
t.datetime "updated_at", null: false
7474
end
7575

76-
create_table "users", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
76+
create_table "users", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
7777
t.string "name"
7878
t.string "password_digest"
7979
t.string "email"
@@ -82,10 +82,10 @@
8282
t.index ["email"], name: "index_users_on_email", unique: true
8383
end
8484

85-
add_foreign_key "documents", "folders"
86-
add_foreign_key "documents", "people"
87-
add_foreign_key "documents", "states"
88-
add_foreign_key "documents", "users"
85+
add_foreign_key "documents", "folders", on_delete: :nullify
86+
add_foreign_key "documents", "people", on_delete: :nullify
87+
add_foreign_key "documents", "states", on_delete: :nullify
88+
add_foreign_key "documents", "users", on_delete: :cascade
8989
add_foreign_key "documenttags", "documents"
9090
add_foreign_key "documenttags", "tags"
9191
add_foreign_key "folders", "folders"

0 commit comments

Comments
 (0)