allow saving of subproject when using existing client
This commit is contained in:
@@ -5,9 +5,9 @@ class Subproject < ApplicationRecord
|
|||||||
belongs_to :owner, class_name: 'Client', optional: true
|
belongs_to :owner, class_name: 'Client', optional: true
|
||||||
belongs_to :builder, 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 :client, reject_if: ->(attrs) { attrs['id'].present? || attrs.values.all?(&:blank?) }
|
||||||
accepts_nested_attributes_for :owner, reject_if: :all_blank
|
accepts_nested_attributes_for :owner, reject_if: ->(attrs) { attrs['id'].present? || attrs.values.all?(&:blank?) }
|
||||||
accepts_nested_attributes_for :builder, reject_if: :all_blank
|
accepts_nested_attributes_for :builder, reject_if: ->(attrs) { attrs['id'].present? || attrs.values.all?(&:blank?) }
|
||||||
|
|
||||||
validates :subproject_name, presence: true
|
validates :subproject_name, presence: true
|
||||||
validate :client_presence_check
|
validate :client_presence_check
|
||||||
@@ -17,16 +17,19 @@ class Subproject < ApplicationRecord
|
|||||||
validates_associated :client, :owner, :builder
|
validates_associated :client, :owner, :builder
|
||||||
|
|
||||||
def client_attributes=(attributes)
|
def client_attributes=(attributes)
|
||||||
|
return if self.client_id.present?
|
||||||
self.client = Client.find_or_initialize_by(email: attributes[:email])
|
self.client = Client.find_or_initialize_by(email: attributes[:email])
|
||||||
self.client.assign_attributes(attributes)
|
self.client.assign_attributes(attributes)
|
||||||
end
|
end
|
||||||
|
|
||||||
def owner_attributes=(attributes)
|
def owner_attributes=(attributes)
|
||||||
|
return if self.owner_id.present?
|
||||||
self.owner = Client.find_or_initialize_by(email: attributes[:email])
|
self.owner = Client.find_or_initialize_by(email: attributes[:email])
|
||||||
self.owner.assign_attributes(attributes)
|
self.owner.assign_attributes(attributes)
|
||||||
end
|
end
|
||||||
|
|
||||||
def builder_attributes=(attributes)
|
def builder_attributes=(attributes)
|
||||||
|
return if self.builder_id.present?
|
||||||
self.builder = Client.find_or_initialize_by(email: attributes[:email])
|
self.builder = Client.find_or_initialize_by(email: attributes[:email])
|
||||||
self.builder.assign_attributes(attributes)
|
self.builder.assign_attributes(attributes)
|
||||||
end
|
end
|
||||||
@@ -57,12 +60,12 @@ class Subproject < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
def owner_attributes_blank?
|
def owner_attributes_blank?
|
||||||
return true if client.nil?
|
return true if owner.nil?
|
||||||
owner.attributes.except("id", "created_at", "updated_at").values.all?(&:blank?)
|
owner.attributes.except("id", "created_at", "updated_at").values.all?(&:blank?)
|
||||||
end
|
end
|
||||||
|
|
||||||
def builder_attributes_blank?
|
def builder_attributes_blank?
|
||||||
return true if client.nil?
|
return true if builder.nil?
|
||||||
builder.attributes.except("id", "created_at", "updated_at").values.all?(&:blank?)
|
builder.attributes.except("id", "created_at", "updated_at").values.all?(&:blank?)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user