5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-07-01 22:06:08 +00:00

fix: establecer relación bidireccional #10491

This commit is contained in:
f 2023-03-22 14:26:06 -03:00
parent 034015938b
commit 6d59d79e2a

View file

@ -7,9 +7,43 @@ class MetadataLocales < MetadataHasAndBelongsToMany
# @return { lang: { title: uuid } }
def values
@values ||= site.locales.map do |locale|
[locale, site.posts(lang: locale).map do |post|
[locale, posts.where(lang: locale).map do |post|
[title(post), post.uuid.value]
end.to_h]
end.to_h
end
# Siempre hay una relación inversa
#
# @return [True]
def inverse?
true
end
# El campo inverso se llama igual en el otro post
#
# @return [Symbol]
def inverse
:locales
end
private
# Obtiene todos los locales distintos a este post
#
# @return [Array]
def other_locales
site.locales.reject do |locale|
locale == post.lang.value.to_sym
end
end
# Obtiene todos los posts de los otros locales con el mismo layout
#
# @return [PostRelation]
def posts
other_locales.map do |locale|
site.posts(lang: locale).where(layout: post.layout.value)
end.reduce(&:concat)
end
end