aboutsummaryrefslogtreecommitdiff
path: root/models
diff options
context:
space:
mode:
authorJohn Ankarström <john@ankarstrom.se>2021-03-02 00:10:03 +0100
committerJohn Ankarström <john@ankarstrom.se>2021-03-02 00:10:03 +0100
commit7640f27b9e183c6e9a00249c352e3515d3f90c75 (patch)
treee58d598bbaa577b541559b9bd0380ba2d4665264 /models
parent4e18684bb21564ee1d9c616b9cf1eece3a241f8c (diff)
downloadcomb-7640f27b9e183c6e9a00249c352e3515d3f90c75.tar.gz
Rename db directory to models
Diffstat (limited to 'models')
-rw-r--r--models/comment.rb20
-rw-r--r--models/config.rb17
-rw-r--r--models/post.rb18
-rw-r--r--models/tag.rb26
4 files changed, 81 insertions, 0 deletions
diff --git a/models/comment.rb b/models/comment.rb
new file mode 100644
index 0000000..b3977f6
--- /dev/null
+++ b/models/comment.rb
@@ -0,0 +1,20 @@
+class Comment < ActiveRecord::Base
+ belongs_to :post
+ validates_presence_of :date
+ validates_presence_of :author
+ validates_presence_of :email
+ validates_format_of :email, with: /@/
+ validates_presence_of :body
+end
+
+class CreateCommentTable < ActiveRecord::Migration[6.0]
+ def change
+ create_table :comments do |t|
+ t.references :post, foreign_key: true, index: true
+ t.string :author, null: false
+ t.string :email, null: false
+ t.string :body, null: false
+ t.timestamps
+ end
+ end
+end
diff --git a/models/config.rb b/models/config.rb
new file mode 100644
index 0000000..55b4106
--- /dev/null
+++ b/models/config.rb
@@ -0,0 +1,17 @@
+class Config < ActiveRecord::Base
+ self.table_name = 'config'
+ validates_presence_of :title
+ validates_presence_of :timezone
+ validates_presence_of :postsperpage
+end
+
+class CreateConfigTable < ActiveRecord::Migration[6.0]
+ def change
+ create_table :config do |t|
+ t.string :title, null: false
+ t.string :subtitle
+ t.string :timezone, null: false
+ t.integer :postsperpage, null: false
+ end
+ end
+end
diff --git a/models/post.rb b/models/post.rb
new file mode 100644
index 0000000..1d44051
--- /dev/null
+++ b/models/post.rb
@@ -0,0 +1,18 @@
+class Post < ActiveRecord::Base
+ has_many :comments
+ has_many :tags, through: :post_tag_links
+
+ validates_presence_of :title
+ validates_presence_of :body
+end
+
+class CreatePostTable < ActiveRecord::Migration[6.0]
+ def change
+ create_table :posts do |t|
+ t.string :title, null: false
+ t.string :body, null: false
+ t.boolean :locked, default: false
+ t.timestamps
+ end
+ end
+end
diff --git a/models/tag.rb b/models/tag.rb
new file mode 100644
index 0000000..9c24b6c
--- /dev/null
+++ b/models/tag.rb
@@ -0,0 +1,26 @@
+class PostTagLink < ActiveRecord::Base
+ belongs_to :post
+ belongs_to :tag
+end
+
+class CreatePostTagLinkTable < ActiveRecord::Migration[6.0]
+ def change
+ create_table :post_tag_links do |t|
+ t.references :post, foreign_key: true, index: true
+ t.references :tag, foreign_key: true, index: true
+ end
+ end
+end
+
+class Tag < ActiveRecord::Base
+ belongs_to :post
+ validates_presence_of :name
+end
+
+class CreateTagTable < ActiveRecord::Migration[6.0]
+ def change
+ create_table :tags do |t|
+ t.string :name, null: false
+ end
+ end
+end