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 :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 | ||||
|   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?) } | ||||
|  | ||||
|   validates :subproject_name, presence: true | ||||
|   validate :client_presence_check | ||||
| @@ -17,16 +17,19 @@ class Subproject < ApplicationRecord | ||||
|   validates_associated :client, :owner, :builder | ||||
|  | ||||
|   def client_attributes=(attributes) | ||||
|     return if self.client_id.present? | ||||
|     self.client = Client.find_or_initialize_by(email: attributes[:email]) | ||||
|     self.client.assign_attributes(attributes) | ||||
|   end | ||||
|  | ||||
|   def owner_attributes=(attributes) | ||||
|     return if self.owner_id.present? | ||||
|     self.owner = Client.find_or_initialize_by(email: attributes[:email]) | ||||
|     self.owner.assign_attributes(attributes) | ||||
|   end | ||||
|  | ||||
|   def builder_attributes=(attributes) | ||||
|     return if self.builder_id.present? | ||||
|     self.builder = Client.find_or_initialize_by(email: attributes[:email]) | ||||
|     self.builder.assign_attributes(attributes) | ||||
|   end | ||||
| @@ -57,12 +60,12 @@ class Subproject < ApplicationRecord | ||||
|   end | ||||
|  | ||||
|   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?) | ||||
|   end | ||||
|  | ||||
|   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?) | ||||
|   end | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Stefan Tollkühn
					Stefan Tollkühn