Advertisement
Guest User

Untitled

a guest
Dec 11th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.49 KB | None | 0 0
  1. def index
  2. @user = current_user
  3. @projects = @user.projects
  4. end
  5.  
  6. def create
  7. @project = Project.new(project_params)
  8. @project.user_id = current_user.id
  9. if @project.save
  10. flash[:success] = "successfully created project"
  11. redirect_to projects_path
  12. else
  13. render 'new'
  14. end
  15. end
  16.  
  17. class Invite < ApplicationRecord
  18. belongs_to :project
  19. belongs_to :sender, :class_name => 'User'
  20. belongs_to :recipient, :class_name => 'User'
  21.  
  22. before_create :generate_token
  23. before_save :check_user_existence
  24.  
  25. def generate_token
  26. self.token = Digest::SHA1.hexdigest([self.project_id, Time.now, rand].join)
  27. end
  28.  
  29. def check_user_existence
  30. recipient = User.find_by_email(email)
  31. if recipient
  32. self.recipient_id = recipient.id
  33. end
  34. end
  35.  
  36. end
  37.  
  38. class User < ApplicationRecord
  39. has_many :memberships
  40. has_many :projects, through: :memberships
  41. has_many :invitations, :class_name => 'Invite', :foreign_key => 'recipient_id'
  42. has_many :sent_invites, :class_name => 'Invite', :foreign_key => 'sender_id'
  43. # Include default devise modules. Others available are:
  44. # :confirmable, :lockable, :timeoutable and :omniauthable
  45. devise :database_authenticatable, :registerable,
  46. :recoverable, :rememberable, :trackable, :validatable
  47. end
  48.  
  49. class Project < ApplicationRecord
  50. has_many :memberships
  51. has_many :users, through: :memberships
  52. has_many :invites
  53. end
  54.  
  55. class Membership < ApplicationRecord
  56. belongs_to :user
  57. belongs_to :project
  58. end
  59.  
  60. <div class="container">
  61. <h3> All your projects </h3>
  62. <% @projects.each do |project| %>
  63. <div class="project-card">
  64. <div class="card-title">
  65. <%= link_to project.title, project_path(project) %>
  66. </div>
  67. </div>
  68. <% end %>
  69. </div>
  70.  
  71. ActiveRecord::Schema.define(version: 20161211133001) do
  72.  
  73. create_table "invites", force: :cascade do |t|
  74. t.string "email"
  75. t.integer "project_id"
  76. t.integer "sender_id"
  77. t.integer "recipient_id"
  78. t.string "token"
  79. t.datetime "created_at", null: false
  80. t.datetime "updated_at", null: false
  81. end
  82.  
  83. create_table "memberships", force: :cascade do |t|
  84. t.datetime "created_at", null: false
  85. t.datetime "updated_at", null: false
  86. t.integer "user_id"
  87. t.integer "project_id"
  88. t.index ["project_id"], name: "index_memberships_on_project_id"
  89. t.index ["user_id"], name: "index_memberships_on_user_id"
  90. end
  91.  
  92. create_table "projects", force: :cascade do |t|
  93. t.string "title"
  94. t.integer "nb_team"
  95. t.datetime "created_at", null: false
  96. t.datetime "updated_at", null: false
  97. t.integer "user_id"
  98. end
  99.  
  100. create_table "users", force: :cascade do |t|
  101. t.string "email", default: "", null: false
  102. t.string "encrypted_password", default: "", null: false
  103. t.string "reset_password_token"
  104. t.datetime "reset_password_sent_at"
  105. t.datetime "remember_created_at"
  106. t.integer "sign_in_count", default: 0, null: false
  107. t.datetime "current_sign_in_at"
  108. t.datetime "last_sign_in_at"
  109. t.string "current_sign_in_ip"
  110. t.string "last_sign_in_ip"
  111. t.datetime "created_at", null: false
  112. t.datetime "updated_at", null: false
  113. t.index ["email"], name: "index_users_on_email", unique: true
  114. t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
  115. end
  116.  
  117. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement