ruby-on-rails - transformers - ransack rails tutorial
Eliminar orden del alcance de ActiveRecord (2)
Estoy usando rails ransack ( https://github.com/ernie/ransack ) para permitir a los usuarios filtrar y ordenar algunos registros. Obtengo los registros filtrados y ordenados usando métodos tradicionales.
@invoices = Invoice.search(params[:q]).result
Ahora me gustaría obtener información resumida, así que tengo
@invoices = Invoice.search(params[:q]).result
@summary = @invoices.select("sum(balance) as balance_total").first
Excepto cuando el usuario especifica un campo para ordenar. Me sale el error de SQL:
Column "project_name" is invalid in the ORDER BY clause because
it is not contained in either an aggregate function or the GROUP BY clause
¿Puedo eliminar el género del alcance? ¿Cómo?
Gracias
Puede llamar al método de reorder con una cadena vacía. P.ej:
> Article.order(''headline asc'').to_sql
=> "SELECT `articles`.* FROM `articles` ORDER BY headline asc"
> Article.order(''headline asc'').reorder('''').to_sql
=> "SELECT `articles`.* FROM `articles` "
También puede usar el método de clase no unscoped
en Rails 3:
class Post < ActiveRecord::Base
default_scope :published => true
end
posts = Post.all #=> SELECT * FROM posts WHERE published = true
posts = Post.unscoped do
Post.all #=> SELECT * FROM posts
end
En Rails 2 se llamó with_exclusive_scope
.
Ver https://github.com/rails/rails/commit/bd1666ad1de88598ed6f04ceffb8488a77be4385