diff --git a/app/services/post_service.rb b/app/services/post_service.rb index 08a46ae7..90aa9401 100644 --- a/app/services/post_service.rb +++ b/app/services/post_service.rb @@ -52,6 +52,7 @@ PostService = Struct.new(:site, :usuarie, :post, :params, keyword_init: true) do rm = [] rm << post.path.value_was if post.path.changed? + create_nested_posts! post, params[:post] update_related_posts # Es importante que el artículo se guarde primero y luego los @@ -181,7 +182,7 @@ PostService = Struct.new(:site, :usuarie, :post, :params, keyword_init: true) do post.nested_attributes.each do |nested_attribute| nested_metadata = post[nested_attribute] # @todo find_or_initialize - nested_post = site.posts(lang: post.lang.value).build(layout: nested_metadata.nested) + nested_post = nested_metadata.has_one || site.posts(lang: post.lang.value).build(layout: nested_metadata.nested) nested_params = params.require(nested_attribute).permit(nested_post.params).to_hash # Completa la relación 1:1 diff --git a/app/views/posts/attributes/_has_one_nested.haml b/app/views/posts/attributes/_has_one_nested.haml index e98bff47..4aabf386 100644 --- a/app/views/posts/attributes/_has_one_nested.haml +++ b/app/views/posts/attributes/_has_one_nested.haml @@ -1,6 +1,6 @@ -- new_post = site.posts(lang: locale).build(layout: metadata.nested) +- nested_post = metadata.has_one || site.posts(lang: locale).build(layout: metadata.nested) - base = "#{base}[#{metadata.name}]" .form-group = render 'layouts/details', id: metadata.nested, summary: site.layouts[metadata.nested].humanized_name do - = render 'posts/attributes_nested', site: site, post: new_post, dir: dir, base: base, locale: locale, inverse: metadata.inverse + = render 'posts/attributes_nested', site: site, post: nested_post, dir: dir, base: base, locale: locale, inverse: metadata.inverse