Stub a projects controller and views

This commit is contained in:
Jeffrey Hardy
2024-09-17 11:35:27 -04:00
parent c09a02fa98
commit 5585f74e81
12 changed files with 90 additions and 3 deletions
+41
View File
@@ -0,0 +1,41 @@
class ProjectsController < ApplicationController
before_action :set_project, except: %i[ index new create ]
def index
@projects = Current.user.projects.all
end
def new
@project = Current.account.projects.build
end
def create
@project = Current.account.projects.create!(project_params)
redirect_to @project
end
def show
end
def edit
end
def update
@project.update!(project_params)
redirect_to @project
end
def destroy
@project.destroy
redirect_to projects_url
end
private
def set_project
@project = Current.user.projects.find(params[:id])
end
def project_params
params.require(:project).permit(:name)
end
end
+2
View File
@@ -0,0 +1,2 @@
module ProjectsHelper
end
+3
View File
@@ -1,3 +1,6 @@
class Account < ApplicationRecord
has_many :users, dependent: :destroy
has_many :projects, dependent: :destroy
has_many :bubbles, through: :projects
end
+2
View File
@@ -1,4 +1,6 @@
class Current < ActiveSupport::CurrentAttributes
attribute :session
delegate :user, to: :session, allow_nil: true
delegate :account, to: :user, allow_nil: true
end
+9 -2
View File
@@ -1,6 +1,13 @@
class Project < ApplicationRecord
belongs_to :creator, class_name: "User"
belongs_to :account, default: -> { creator&.account }
belongs_to :account
belongs_to :creator, class_name: "User", default: -> { Current.user }
has_many :accesses, dependent: :destroy
has_many :users, through: :accesses
has_many :bubbles, dependent: :destroy
after_create do
accesses.create!(user: creator)
end
end
+6
View File
@@ -0,0 +1,6 @@
<h1>Edit Project</h1>
<%= form_with model: @project do |form| %>
<p>Name:<br><%= form.text_field :name %></p>
<p><%= form.submit %>
<% end %>
+9
View File
@@ -0,0 +1,9 @@
<h1>Projects</h1>
<p><%= link_to "New", new_project_path %></p>
<ul>
<% @projects.each do |project| %>
<li><%= link_to project.name, project %></li>
<% end %>
</ul>
+6
View File
@@ -0,0 +1,6 @@
<h1>New Project</h1>
<%= form_with model: @project do |form| %>
<p>Name:<br><%= form.text_field :name %></p>
<p><%= form.submit %>
<% end %>
+2
View File
@@ -0,0 +1,2 @@
<h1>Project: <%= @project.name %></h1>
<p><%= link_to "Edit", edit_project_path(@project) %>
+2
View File
@@ -3,6 +3,8 @@ Rails.application.routes.draw do
resource :session
resources :projects
resources :bubbles do
resource :image, controller: "bubbles/images"
+1 -1
View File
@@ -8,6 +8,6 @@ class CreateProjects < ActiveRecord::Migration[8.0]
t.timestamps
end
Project.create!(name: "Writebook", creator: User.first)
Account.first.projects.create! name: "Writebook", account: , creator: User.first
end
end
@@ -0,0 +1,7 @@
require "test_helper"
class ProjectsControllerTest < ActionDispatch::IntegrationTest
# test "the truth" do
# assert true
# end
end