mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-16 14:11:41 +00:00
fix: establecer relación bidireccional #10491
This commit is contained in:
parent
034015938b
commit
6d59d79e2a
1 changed files with 35 additions and 1 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue