diff --git a/app/models/university/organization.rb b/app/models/university/organization.rb index a7cd539fc5a21cbc3fb451a1f7531cfc39419b05..dc384b1076747652b5b4c19ab9777463cd5e6c1f 100644 --- a/app/models/university/organization.rb +++ b/app/models/university/organization.rb @@ -74,6 +74,8 @@ class University::Organization < ApplicationRecord } validates_presence_of :name + # Organization can be created from extranet with only their name. Be careful for future validators. + # There is an attribute accessor above : `created_from_extranet` enum kind: { company: 10, diff --git a/app/models/university/person/experience.rb b/app/models/university/person/experience.rb index 5b5ec61adebb1c9ac6805d548b26b2f3067a4538..9a841a781fe2c95c4f0c3326a39c430cd7ea2a97 100644 --- a/app/models/university/person/experience.rb +++ b/app/models/university/person/experience.rb @@ -50,11 +50,10 @@ class University::Person::Experience < ApplicationRecord def create_organization_if_needed if organization.nil? && organization_name.present? self.organization_name = self.organization_name.strip - self.organization = university.organizations - .where("name ILIKE ?", organization_name) - .or(university.organizations.where(siren: organization_name)).first_or_create do |organization| - organization.created_from_extranet = true - end + orga = university.organizations.find_by("name ILIKE ?", organization_name) + orga ||= university.organizations.find_by(siren: organization_name) + orga ||= university.organizations.create(name: organization_name, created_from_extranet: true) + self.organization = orga if orga.persisted? end end end