diff options
author | John Ankarström <john@ankarstrom.se> | 2021-03-01 22:02:18 +0100 |
---|---|---|
committer | John Ankarström <john@ankarstrom.se> | 2021-03-01 22:09:14 +0100 |
commit | 8a0d78fbf448ed607e0a48973d936ceed79ad43e (patch) | |
tree | 56b3005e8010486799f3d52dcdc895971bd603cd /db | |
parent | fd8bb73f5a79807a6f321777fe1bf3128aaf104c (diff) | |
download | comb-8a0d78fbf448ed607e0a48973d936ceed79ad43e.tar.gz |
Add ActiveRecord models and migrations
Diffstat (limited to 'db')
-rw-r--r-- | db/comment.rb | 20 | ||||
-rw-r--r-- | db/config.rb | 17 | ||||
-rw-r--r-- | db/init.rb | 11 | ||||
-rw-r--r-- | db/post.rb | 18 | ||||
-rw-r--r-- | db/tag.rb | 26 |
5 files changed, 92 insertions, 0 deletions
diff --git a/db/comment.rb b/db/comment.rb new file mode 100644 index 0000000..b3977f6 --- /dev/null +++ b/db/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/db/config.rb b/db/config.rb new file mode 100644 index 0000000..55b4106 --- /dev/null +++ b/db/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/db/init.rb b/db/init.rb new file mode 100644 index 0000000..7c08faf --- /dev/null +++ b/db/init.rb @@ -0,0 +1,11 @@ +require 'active_record' + +ActiveRecord::Base.establish_connection( + adapter: 'sqlite3', + database: 'db.sqlite3' +) + +require_relative 'config' +require_relative 'comment' +require_relative 'post' +require_relative 'tag' diff --git a/db/post.rb b/db/post.rb new file mode 100644 index 0000000..1d44051 --- /dev/null +++ b/db/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/db/tag.rb b/db/tag.rb new file mode 100644 index 0000000..7f3446c --- /dev/null +++ b/db/tag.rb @@ -0,0 +1,26 @@ +class PostTagLink < Active::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 |