5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-07-05 19:35:45 +00:00

Merge branch 'issue-12985' into panel.sutty.nl

This commit is contained in:
f 2023-04-08 17:27:20 -03:00
commit 0ee11c3276
4 changed files with 58 additions and 3 deletions

View file

@ -40,13 +40,21 @@ class MetadataBelongsTo < MetadataRelatedPosts
# Si estamos cambiando la relación, tenemos que eliminar la relación
# anterior
if belonged_to.present?
belonged_to[inverse].value = belonged_to[inverse].value.reject do |rej|
rej == post.uuid.value
if belonged_to[inverse].respond_to? :has_one
belonged_to[inverse].value = nil
else
belonged_to[inverse].value = belonged_to[inverse].value.reject do |rej|
rej == post.uuid.value
end
end
end
# No duplicar las relaciones
belongs_to[inverse].value = (belongs_to[inverse].value.dup << post.uuid.value) unless belongs_to.blank? || included?
if belongs_to[inverse].respond_to? :has_one
belongs_to[inverse].value = post.uuid.value
else
belongs_to[inverse].value = (belongs_to[inverse].value.dup << post.uuid.value) unless belongs_to.blank? || included?
end
true
end

View file

@ -0,0 +1,34 @@
# frozen_string_literal: true
class MetadataHasOne < MetadataHasMany
def had_one
return default_value if value_was.blank?
posts.find(uuid: value)
end
def has_one
return default_value if value.blank?
posts.find(uuid: value)
end
def had_many; end
def has_many; end
def save
super
return true unless changed?
return true unless inverse?
had_one&.value = nil
has_one&.value = post.uuid.value
true
end
def related_methods
@related_methods ||= %i[has_one had_one].freeze
end
end

View file

@ -0,0 +1,6 @@
%tr{ id: attribute }
%th= post_label_t(attribute, post: post)
%td{ dir: dir, lang: locale }
- p = metadata.belongs_to
- if p
= link_to p.title.value, site_post_path(site, p.id)

View file

@ -0,0 +1,7 @@
.form-group
= label_tag "#{base}_#{attribute}", post_label_t(attribute, post: post)
= select_tag(plain_field_name_for(base, attribute),
options_for_select(metadata.values, metadata.value),
**field_options(attribute, metadata), include_blank: t('.empty'))
= render 'posts/attribute_feedback',
post: post, attribute: attribute, metadata: metadata