los artículos filtrados también tienen un sitio
This commit is contained in:
parent
227e48681e
commit
1fb53168e2
1 changed files with 21 additions and 18 deletions
|
@ -92,11 +92,13 @@ class PostRelation < Array
|
||||||
def where(**args)
|
def where(**args)
|
||||||
return self if args.empty?
|
return self if args.empty?
|
||||||
|
|
||||||
PostRelation[*select do |post|
|
@where ||= {}
|
||||||
|
@where[args.hash.to_s] ||= begin
|
||||||
|
PostRelation.new(site: site).concat(select do |post|
|
||||||
result = args.map do |attr, value|
|
result = args.map do |attr, value|
|
||||||
next unless post.attribute?(attr)
|
next unless post.attribute?(attr)
|
||||||
|
|
||||||
attribute = post.public_send(attr)
|
attribute = post[attr]
|
||||||
|
|
||||||
# TODO: Si el valor del atributo también es un Array deberíamos
|
# TODO: Si el valor del atributo también es un Array deberíamos
|
||||||
# cruzar ambas.
|
# cruzar ambas.
|
||||||
|
@ -111,8 +113,9 @@ class PostRelation < Array
|
||||||
end.compact
|
end.compact
|
||||||
|
|
||||||
# Un Array vacío devuelve true para all?
|
# Un Array vacío devuelve true para all?
|
||||||
!result.empty? && result.all?
|
result.present? && result.all?
|
||||||
end]
|
end)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Como Array#select devolviendo una relación
|
# Como Array#select devolviendo una relación
|
||||||
|
@ -120,7 +123,7 @@ class PostRelation < Array
|
||||||
# @return [PostRelation]
|
# @return [PostRelation]
|
||||||
alias array_select select
|
alias array_select select
|
||||||
def select(&block)
|
def select(&block)
|
||||||
PostRelation[*array_select(&block)]
|
PostRelation.new(site: site).concat array_select(&block)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Intenta guardar todos y devuelve true si pudo
|
# Intenta guardar todos y devuelve true si pudo
|
||||||
|
|
Loading…
Reference in a new issue