From 6d60abee4ddfdd7ba4fd463448096197973cbd59 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20Tollk=C3=BChn?=
Date: Wed, 23 Jul 2025 16:33:45 +0200
Subject: [PATCH] Implement SubprojectAddresses in Subprojects
---
app/helpers/subproject_addresses_helper.rb | 2 +-
app/helpers/subprojects_helper.rb | 2 +-
app/models/subproject.rb | 4 ++++
app/views/subproject_addresses/_subproject_address.erb | 5 +++++
app/views/subproject_addresses/show.html.erb | 4 ++++
app/views/subprojects/_subproject.html.erb | 4 ++++
...134650_add_subproject_relation_to_subproject_addresses.rb | 5 +++++
db/schema.rb | 3 ++-
8 files changed, 26 insertions(+), 3 deletions(-)
create mode 100644 db/migrate/20250723134650_add_subproject_relation_to_subproject_addresses.rb
diff --git a/app/helpers/subproject_addresses_helper.rb b/app/helpers/subproject_addresses_helper.rb
index 900a5f8..11eaba5 100644
--- a/app/helpers/subproject_addresses_helper.rb
+++ b/app/helpers/subproject_addresses_helper.rb
@@ -1,5 +1,5 @@
module SubprojectAddressesHelper
def subproject_address_form_fields
- [:streetname, :zipcode, :city, :country]
+ [:streetname, :zipcode, :city, :country, :subproject_id]
end
end
\ No newline at end of file
diff --git a/app/helpers/subprojects_helper.rb b/app/helpers/subprojects_helper.rb
index 8255392..8171be3 100644
--- a/app/helpers/subprojects_helper.rb
+++ b/app/helpers/subprojects_helper.rb
@@ -4,6 +4,6 @@ module SubprojectsHelper
end
def subproject_view_fields
- [:subproject_name, :project, :client, :owner, :builder]
+ [:subproject_name, :project, :client, :owner, :builder, :subproject_address]
end
end
diff --git a/app/models/subproject.rb b/app/models/subproject.rb
index fb251f3..ad18443 100644
--- a/app/models/subproject.rb
+++ b/app/models/subproject.rb
@@ -1,13 +1,17 @@
class Subproject < ApplicationRecord
belongs_to :project
+ has_one :subproject_address, dependent: :destroy
belongs_to :client, class_name: 'Client', optional: true
belongs_to :owner, class_name: 'Client', optional: true
belongs_to :builder, class_name: 'Client', optional: true
+ belongs_to :subproject_addresses, optional: true
accepts_nested_attributes_for :client, reject_if: ->(attrs) { attrs['id'].present? || attrs.values.all?(&:blank?) }
accepts_nested_attributes_for :owner, reject_if: ->(attrs) { attrs['id'].present? || attrs.values.all?(&:blank?) }
accepts_nested_attributes_for :builder, reject_if: ->(attrs) { attrs['id'].present? || attrs.values.all?(&:blank?) }
+ accepts_nested_attributes_for :subproject_addresses, allow_destroy: true, reject_if: ->(attrs) { attrs['id'].present? || attrs.values.all?(&:blank?) }
+
validates :subproject_name, presence: true
validate :client_presence_check
diff --git a/app/views/subproject_addresses/_subproject_address.erb b/app/views/subproject_addresses/_subproject_address.erb
index 48074fc..90cda58 100644
--- a/app/views/subproject_addresses/_subproject_address.erb
+++ b/app/views/subproject_addresses/_subproject_address.erb
@@ -19,4 +19,9 @@
<%= subproject_address.country %>
+
+ Subproject_ID:
+ <%= subproject_address.subproject_id %>
+
+
diff --git a/app/views/subproject_addresses/show.html.erb b/app/views/subproject_addresses/show.html.erb
index 90871bf..cbac125 100644
--- a/app/views/subproject_addresses/show.html.erb
+++ b/app/views/subproject_addresses/show.html.erb
@@ -1,5 +1,9 @@
<%= notice %>
+<% content_for :title, "Adresse" %>
+
+Adresse
+
<%= render @subproject_address %>
diff --git a/app/views/subprojects/_subproject.html.erb b/app/views/subprojects/_subproject.html.erb
index 4cf100d..e89d899 100644
--- a/app/views/subprojects/_subproject.html.erb
+++ b/app/views/subprojects/_subproject.html.erb
@@ -7,6 +7,10 @@
<%= link_to value.name, project_path(value) %>
<% elsif attrib == :client || attrib == :owner || attrib == :builder %>
<%= link_to "#{value&.company_name} (#{value&.lastname}, #{value&.firstname})", client_path(value&.id) %>
+ <% elsif attrib == :subproject_address %>
+ <% if value.present? %>
+ <%= link_to "#{value.streetname}, #{value.zipcode} #{value.city}, #{value.country}", subproject_address_path(value) %>
+ <% end %>
<% else %>
<%= value.is_a?(Date) ? l(value) : value %>
<% end %>
diff --git a/db/migrate/20250723134650_add_subproject_relation_to_subproject_addresses.rb b/db/migrate/20250723134650_add_subproject_relation_to_subproject_addresses.rb
new file mode 100644
index 0000000..c68b469
--- /dev/null
+++ b/db/migrate/20250723134650_add_subproject_relation_to_subproject_addresses.rb
@@ -0,0 +1,5 @@
+class AddSubprojectRelationToSubprojectAddresses < ActiveRecord::Migration[8.0]
+ def change
+ add_column :subproject_addresses, :subproject_id, :integer
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index b6dae50..6b1758b 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema[8.0].define(version: 2025_07_22_152542) do
+ActiveRecord::Schema[8.0].define(version: 2025_07_23_134650) do
create_table "clients", force: :cascade do |t|
t.string "company_name"
t.string "firstname"
@@ -44,6 +44,7 @@ ActiveRecord::Schema[8.0].define(version: 2025_07_22_152542) do
t.text "notes"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
+ t.integer "subproject_id"
end
create_table "subprojects", force: :cascade do |t|