Forked from BEaStia/gist:2ed34070aa3f73610b948c13656d9333
Last active
September 6, 2016 13:59
-
-
Save saroar/1facd5dffdb057983f528cdd3fb6e385 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class CreateProjects < ActiveRecord::Migration[5.0] | |
def change | |
create_table :projects do |t| | |
t.string :name | |
t.timestamps | |
end | |
end | |
end | |
class DeviseCreateUsers < ActiveRecord::Migration[5.0] | |
def change | |
create_table :users do |t| | |
## Database authenticatable | |
t.string :email, null: false, default: "" | |
t.string :encrypted_password, null: false, default: "" | |
## Recoverable | |
t.string :reset_password_token | |
t.datetime :reset_password_sent_at | |
## Rememberable | |
t.datetime :remember_created_at | |
## Trackable | |
t.integer :sign_in_count, default: 0, null: false | |
t.datetime :current_sign_in_at | |
t.datetime :last_sign_in_at | |
t.string :current_sign_in_ip | |
t.string :last_sign_in_ip | |
## Confirmable | |
# t.string :confirmation_token | |
# t.datetime :confirmed_at | |
# t.datetime :confirmation_sent_at | |
# t.string :unconfirmed_email # Only if using reconfirmable | |
## Lockable | |
# t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts | |
# t.string :unlock_token # Only if unlock strategy is :email or :both | |
# t.datetime :locked_at | |
t.string :login | |
t.timestamps null: false | |
end | |
add_index :users, :email, unique: true | |
add_index :users, :reset_password_token, unique: true | |
# add_index :users, :confirmation_token, unique: true | |
# add_index :users, :unlock_token, unique: true | |
end | |
end | |
class CreateTasks < ActiveRecord::Migration[5.0] | |
def change | |
create_table :tasks do |t| | |
t.string :title | |
t.string :description | |
t.integer :status, default: 0 | |
t.integer :reviewer_id, foreign_key: true | |
t.integer :project_id, foreign_key: true | |
t.timestamps | |
end | |
end | |
end | |
class CreateProjectUsers < ActiveRecord::Migration[5.0] | |
def change | |
create_table :project_users do |t| | |
t.references :user, foreign_key: true | |
t.references :project, foreign_key: true | |
t.timestamps | |
end | |
end | |
end | |
class CreateTaskPerformers < ActiveRecord::Migration[5.0] | |
def change | |
create_table :task_performers do |t| | |
t.references :user, foreign_key: true | |
t.references :task, foreign_key: true | |
t.boolean :done, default: false | |
t.timestamps | |
end | |
end | |
end | |
class Project < ApplicationRecord | |
has_many :tasks | |
has_many :project_users | |
has_many :users, through: :project_users | |
end | |
class ProjectUser < ApplicationRecord | |
belongs_to :user | |
belongs_to :project | |
end | |
class Task < ApplicationRecord | |
belongs_to :project | |
belongs_to :reviewer, class_name: User | |
has_many :task_performers | |
has_many :performers, through: :task_performers, class_name: User | |
end | |
class TaskPerformer < ApplicationRecord | |
belongs_to :performer, class_name: User, foreign_key: :user_id | |
belongs_to :task | |
end | |
class User < ApplicationRecord | |
# Include default devise modules. Others available are: | |
# :confirmable, :lockable, :timeoutable and :omniauthable | |
devise :database_authenticatable, :registerable, | |
:recoverable, :rememberable, :trackable, :validatable | |
has_many :project_users | |
has_many :projects, through: :project_users | |
has_many :tasks, :foreign_key => :reviewer | |
has_many :task_performers | |
has_many :tasks, through: :performers, class_name: Task | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment