33 lines
1,021 B
Ruby
33 lines
1,021 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
# Este servicio se encarga de crear artículos y guardarlos en git,
|
||
|
# asignándoselos a une usuarie
|
||
|
PostService = Struct.new(:site, :usuarie, :post, :params, keyword_init: true) do
|
||
|
# Crea un artículo nuevo
|
||
|
#
|
||
|
# @return Post
|
||
|
def create
|
||
|
# TODO: Implementar layout
|
||
|
self.post = site.posts.build
|
||
|
# TODO: No podemos pasar los post_params a build aun porque para
|
||
|
# saber los parámetros tenemos que haber instanciado el post
|
||
|
# primero.
|
||
|
post.update_attributes(post_params) &&
|
||
|
site.repository.commit(file: post.path.absolute,
|
||
|
usuarie: usuarie,
|
||
|
message: I18n.t('post_service.created',
|
||
|
title: post.title.value))
|
||
|
|
||
|
# Devolver el post aunque no se haya salvado para poder rescatar los
|
||
|
# errores
|
||
|
post
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
# Solo permitir cambiar estos atributos de cada articulo
|
||
|
def post_params
|
||
|
params.require(:post).permit(post.params)
|
||
|
end
|
||
|
end
|