Stub a projects controller and views
This commit is contained in:
@@ -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
|
||||
@@ -0,0 +1,2 @@
|
||||
module ProjectsHelper
|
||||
end
|
||||
@@ -1,3 +1,6 @@
|
||||
class Account < ApplicationRecord
|
||||
has_many :users, dependent: :destroy
|
||||
|
||||
has_many :projects, dependent: :destroy
|
||||
has_many :bubbles, through: :projects
|
||||
end
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 %>
|
||||
@@ -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>
|
||||
@@ -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 %>
|
||||
@@ -0,0 +1,2 @@
|
||||
<h1>Project: <%= @project.name %></h1>
|
||||
<p><%= link_to "Edit", edit_project_path(@project) %>
|
||||
@@ -3,6 +3,8 @@ Rails.application.routes.draw do
|
||||
|
||||
resource :session
|
||||
|
||||
resources :projects
|
||||
|
||||
resources :bubbles do
|
||||
resource :image, controller: "bubbles/images"
|
||||
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user