Skip to content
Snippets Groups Projects
Unverified Commit c732c42d authored by Sébastien Gaya's avatar Sébastien Gaya
Browse files

Migratable concern

parent 8abcfe2f
No related tags found
No related merge requests found
Showing
with 37 additions and 0 deletions
...@@ -38,6 +38,7 @@ class Communication::Block < ApplicationRecord ...@@ -38,6 +38,7 @@ class Communication::Block < ApplicationRecord
} }
include AsIndirectObject include AsIndirectObject
include Migratable
include Orderable include Orderable
include WithAccessibility include WithAccessibility
include WithHeadingRanks include WithHeadingRanks
......
...@@ -38,6 +38,7 @@ class Communication::Website::Agenda::Event < ApplicationRecord ...@@ -38,6 +38,7 @@ class Communication::Website::Agenda::Event < ApplicationRecord
include Sanitizable include Sanitizable
include Searchable include Searchable
include Localizable include Localizable
include Migratable
include WithMenuItemTarget include WithMenuItemTarget
include WithOpenApi include WithOpenApi
include WithTime include WithTime
......
...@@ -46,6 +46,7 @@ class Communication::Website::Agenda::Event::Localization < ApplicationRecord ...@@ -46,6 +46,7 @@ class Communication::Website::Agenda::Event::Localization < ApplicationRecord
include Contentful include Contentful
include HeaderCallToAction include HeaderCallToAction
include Initials include Initials
include Migratable
include Permalinkable include Permalinkable
include Sanitizable include Sanitizable
include Shareable include Shareable
......
...@@ -37,6 +37,7 @@ class Communication::Website::Page < ApplicationRecord ...@@ -37,6 +37,7 @@ class Communication::Website::Page < ApplicationRecord
include Filterable include Filterable
include Categorizable # Must be loaded after Filterable to be filtered by categories include Categorizable # Must be loaded after Filterable to be filtered by categories
include Localizable include Localizable
include Migratable
include Orderable include Orderable
include Sanitizable include Sanitizable
include Searchable include Searchable
......
...@@ -34,6 +34,7 @@ class Communication::Website::Page::Category < ApplicationRecord ...@@ -34,6 +34,7 @@ class Communication::Website::Page::Category < ApplicationRecord
include AsDirectObject include AsDirectObject
include Sanitizable include Sanitizable
include Localizable include Localizable
include Migratable
include WithMenuItemTarget include WithMenuItemTarget
include WithOpenApi include WithOpenApi
include WithUniversity include WithUniversity
......
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
# #
class Communication::Website::Page::Category::Localization < ApplicationRecord class Communication::Website::Page::Category::Localization < ApplicationRecord
include AsCategoryLocalization include AsCategoryLocalization
include Migratable
include WithOpenApi include WithOpenApi
belongs_to :website, belongs_to :website,
......
...@@ -45,6 +45,7 @@ class Communication::Website::Page::Localization < ApplicationRecord ...@@ -45,6 +45,7 @@ class Communication::Website::Page::Localization < ApplicationRecord
include Contentful include Contentful
include HeaderCallToAction include HeaderCallToAction
include Initials include Initials
include Migratable
include Permalinkable include Permalinkable
include Sanitizable include Sanitizable
include Shareable include Shareable
......
...@@ -32,6 +32,7 @@ class Communication::Website::Portfolio::Project < ApplicationRecord ...@@ -32,6 +32,7 @@ class Communication::Website::Portfolio::Project < ApplicationRecord
include Sanitizable include Sanitizable
include Searchable include Searchable
include Localizable include Localizable
include Migratable
include WithMenuItemTarget include WithMenuItemTarget
include WithUniversity include WithUniversity
......
...@@ -42,6 +42,7 @@ class Communication::Website::Portfolio::Project::Localization < ApplicationReco ...@@ -42,6 +42,7 @@ class Communication::Website::Portfolio::Project::Localization < ApplicationReco
include Contentful include Contentful
include HeaderCallToAction include HeaderCallToAction
include Initials include Initials
include Migratable
include Permalinkable include Permalinkable
include Sanitizable include Sanitizable
include Shareable include Shareable
......
...@@ -28,6 +28,7 @@ class Communication::Website::Post < ApplicationRecord ...@@ -28,6 +28,7 @@ class Communication::Website::Post < ApplicationRecord
include Sanitizable include Sanitizable
include Searchable include Searchable
include Localizable include Localizable
include Migratable
include WithMenuItemTarget include WithMenuItemTarget
include WithOpenApi include WithOpenApi
include WithUniversity include WithUniversity
......
...@@ -44,6 +44,7 @@ class Communication::Website::Post::Localization < ApplicationRecord ...@@ -44,6 +44,7 @@ class Communication::Website::Post::Localization < ApplicationRecord
include Contentful include Contentful
include HeaderCallToAction include HeaderCallToAction
include Initials include Initials
include Migratable
include Permalinkable include Permalinkable
include Sanitizable include Sanitizable
include Shareable include Shareable
......
module Migratable
extend ActiveSupport::Concern
included do
validate :migration_identifier_must_be_unique, if: -> { migration_identifier.present? }
end
protected
def migration_identifier_unavailable?
existence_params = { migration_identifier: migration_identifier }
existence_params[:university_id] = self.university_id if respond_to?(:university_id)
self.class.unscoped
.where(**existence_params)
.where.not(id: self.id)
.exists?
end
def migration_identifier_must_be_unique
errors.add(:migration_identifier, :taken) if migration_identifier_unavailable?
end
end
\ No newline at end of file
...@@ -34,6 +34,7 @@ class University::Organization < ApplicationRecord ...@@ -34,6 +34,7 @@ class University::Organization < ApplicationRecord
include Categorizable # Must be loaded after Filterable to be filtered by categories include Categorizable # Must be loaded after Filterable to be filtered by categories
include Localizable include Localizable
include LocalizableOrderByNameScope include LocalizableOrderByNameScope
include Migratable
include Sanitizable include Sanitizable
include Searchable include Searchable
include WithCountry include WithCountry
......
...@@ -26,6 +26,7 @@ class University::Organization::Category < ApplicationRecord ...@@ -26,6 +26,7 @@ class University::Organization::Category < ApplicationRecord
include AsCategory include AsCategory
include AsIndirectObject include AsIndirectObject
include Localizable include Localizable
include Migratable
include WithOpenApi include WithOpenApi
include WithUniversity include WithUniversity
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
# #
class University::Organization::Category::Localization < ApplicationRecord class University::Organization::Category::Localization < ApplicationRecord
include AsCategoryLocalization include AsCategoryLocalization
include Migratable
include WithOpenApi include WithOpenApi
def git_path(website) def git_path(website)
......
...@@ -41,6 +41,7 @@ class University::Organization::Localization < ApplicationRecord ...@@ -41,6 +41,7 @@ class University::Organization::Localization < ApplicationRecord
include Backlinkable include Backlinkable
include Contentful include Contentful
include Initials include Initials
include Migratable
include Permalinkable include Permalinkable
include Sanitizable include Sanitizable
include Shareable include Shareable
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment