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|