Files
parse/app/models/subproject.rb
Stefan Tollkühn 3735122750 initial commit
2025-07-21 12:14:42 +02:00

53 lines
1.6 KiB
Ruby

class Subproject < ApplicationRecord
belongs_to :project
belongs_to :client, class_name: 'Client', optional: true
belongs_to :owner, class_name: 'Client', optional: true
belongs_to :builder, class_name: 'Client', optional: true
accepts_nested_attributes_for :client, reject_if: :all_blank
accepts_nested_attributes_for :owner, reject_if: :all_blank
accepts_nested_attributes_for :builder, reject_if: :all_blank
validates :subproject_name, presence: true
validate :client_presence_check
validate :owner_presence_check
validate :builder_presence_check
private
private
def client_presence_check
if client_id.blank? && (client_attributes_blank?)
errors.add(:client, "must be selected or a new client must be provided")
end
end
def owner_presence_check
if owner_id.blank? && (owner_attributes_blank?)
errors.add(:owner, "must be selected or a new owner must be provided")
end
end
def builder_presence_check
if builder_id.blank? && (builder_attributes_blank?)
errors.add(:builder, "must be selected or a new builder must be provided")
end
end
def client_attributes_blank?
return true if client.nil?
client.attributes.except("id", "created_at", "updated_at").values.all?(&:blank?)
end
def owner_attributes_blank?
return true if client.nil?
owner_attributes.except("id", "created_at", "updated_at").values.all?(&:blank?)
end
def builder_attributes_blank?
return true if client.nil?
builder_attributes.except("id", "created_at", "updated_at").values.all?(&:blank?)
end
end