mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-22 15:36:22 +00:00
feat: no romper relaciones retroactivamente
oculta los artículos relacionados que ya tienen una relación establecida, para no romperla sin querer.
This commit is contained in:
parent
43308e2811
commit
6d9609f944
3 changed files with 33 additions and 2 deletions
27
app/models/concerns/metadata/unused_values_concern.rb
Normal file
27
app/models/concerns/metadata/unused_values_concern.rb
Normal file
|
@ -0,0 +1,27 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Metadata
|
||||
# Hasta ahora veníamos habilitando la opción de romper
|
||||
# retroactivamente relaciones, sin informar que estaba sucediendo.
|
||||
# Con este módulo, todas las relaciones que ya tienen una relación
|
||||
# inversa son ignoradas.
|
||||
module UnusedValuesConcern
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
# Genera un Hash de { title | slug => uuid }, excluyendo el Post
|
||||
# actual y todos los que ya tengan una relación inversa, para no
|
||||
# romperla.
|
||||
#
|
||||
# @return [Hash]
|
||||
def values
|
||||
@values ||= posts.map do |p|
|
||||
next if p.uuid.value == post.uuid.value
|
||||
next unless inverse? && (p[inverse].empty? || [p[inverse].value].flatten.include?(post.uuid.value))
|
||||
|
||||
[title(p), p.uuid.value]
|
||||
end.compact.to_h
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,4 +1,6 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Nueva interfaz
|
||||
class MetadataNewBelongsTo < MetadataBelongsTo; end
|
||||
class MetadataNewBelongsTo < MetadataBelongsTo
|
||||
include Metadata::UnusedValuesConcern
|
||||
end
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Interfaz nueva para uno a muchos
|
||||
class MetadataNewHasMany < MetadataHasMany; end
|
||||
class MetadataNewHasMany < MetadataHasMany
|
||||
include Metadata::UnusedValuesConcern
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue