Me gusta carvil Tengo en mi modelo un datetime para created_at aunque quería el predicado "igual" para comparar el created_at y una fecha (como '2012-09-26').Ruby on Rails Ransack Fecha y hora de búsqueda
por lo que añade en mi modelo (con el fin de añadir atributos emitidos y quitar el viejo created_at/update_at/deleted_at:
ransacker :created_at do
Arel::Nodes::SqlLiteral.new("date(items.created_at)")
end
ransacker :updated_at do
Arel::Nodes::SqlLiteral.new("date(items.updated_at)")
end
ransacker :deleted_at do
Arel::Nodes::SqlLiteral.new("date(items.deleted_at)")
end
# Hide some attributes for advanced search
UNRANSACKABLE_ATTRIBUTES = ["created_at", "updated_at", "deleted_at"]
def self.ransackable_attributes auth_object = nil
(column_names - UNRANSACKABLE_ATTRIBUTES) + _ransackers.keys
end
Pero cuando confirmo la consulta (created_at es igual a '2012-03- 24') tengo este error:..
NoMethodError (undefined method `name' for "date(items.created_at)":Arel::Nodes::SqlLiteral):
manera sorprendente, se trabaja con 'mayor que' y 'menor que' sólo 'iguales' este error se produce
hice todo esto para toda mi mes dels y el 60% funciona (el 40% restante tiene este error).
En la consola:
irb(main):232:0> Item.search(:created_at_eq => Date.today.to_s).result
(Object doesn't support #inspect)
Gracias por su ayuda
EDIT:
Tengo un default_scope lo que hace: Opción (: deleted_at falsa)
Pero no sé por qué ocurre el error
Parece que esto no se ha resuelto todavía: https://github.com/activerecord-hackery/ransack/issues/34 . ¿Alguna vez entendiste tu problema? –