actualizar el índice cuando se agrega o modifica un post
además, activa callbacks de activerecord de forma que Post se va pareciendo cada vez más a un modelo de rails :D
This commit is contained in:
parent
d61d1cad56
commit
fd7ab8d7ef
2 changed files with 16 additions and 3 deletions
|
@ -17,6 +17,7 @@ class Post
|
||||||
|
|
||||||
attr_reader :attributes, :errors, :layout, :site, :document
|
attr_reader :attributes, :errors, :layout, :site, :document
|
||||||
|
|
||||||
|
include ActiveRecord::Callbacks
|
||||||
include Post::Indexable
|
include Post::Indexable
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
|
@ -285,8 +286,10 @@ class Post
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
run_callbacks :save do
|
||||||
return false unless save_attributes!
|
return false unless save_attributes!
|
||||||
return false unless write
|
return false unless write
|
||||||
|
end
|
||||||
|
|
||||||
# Vuelve a leer el post para tomar los cambios
|
# Vuelve a leer el post para tomar los cambios
|
||||||
read
|
read
|
||||||
|
|
|
@ -6,11 +6,14 @@ class Post
|
||||||
extend ActiveSupport::Concern
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
included do
|
included do
|
||||||
|
# Indexa o reindexa el Post
|
||||||
|
after_save :index!
|
||||||
|
|
||||||
# Devuelve una versión indexable del Post
|
# Devuelve una versión indexable del Post
|
||||||
#
|
#
|
||||||
# @return [IndexedPosts]
|
# @return [IndexedPosts]
|
||||||
def to_index
|
def to_index
|
||||||
@to_index ||= IndexedPost.find_or_create_by(id: uuid.value).tap do |indexed_post|
|
IndexedPost.find_or_create_by(id: uuid.value).tap do |indexed_post|
|
||||||
indexed_post.layout = layout.name
|
indexed_post.layout = layout.name
|
||||||
indexed_post.site_id = site.id
|
indexed_post.site_id = site.id
|
||||||
indexed_post.path = path.basename
|
indexed_post.path = path.basename
|
||||||
|
@ -25,6 +28,13 @@ class Post
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
# Indexa o reindexa el Post
|
||||||
|
#
|
||||||
|
# @return [Boolean]
|
||||||
|
def index!
|
||||||
|
to_index.save
|
||||||
|
end
|
||||||
|
|
||||||
# Los metadatos que se almacenan como objetos JSON. Empezamos con
|
# Los metadatos que se almacenan como objetos JSON. Empezamos con
|
||||||
# las categorías porque se usan para filtrar en el listado de
|
# las categorías porque se usan para filtrar en el listado de
|
||||||
# artículos.
|
# artículos.
|
||||||
|
|
Loading…
Reference in a new issue