замена определенных значений столбца на «-» в результирующем наборе will_paginate без влияния на сортировку - PullRequest
0 голосов
/ 05 марта 2011

У меня есть таблица моделей с 3 полями: «id», «amount» и «type».Я вызываю метод paginate для отображения данных, но мне нужно заменить сумму на «-», если type = «specific_type».

Я могу сделать это, заменив значения в представлении на «-», если выполняется условие типа.Но это портит порядок сортировки, так как я хотел бы, чтобы значения «-» эффективно оценивались как 0, но замена значений только в представлении все еще оставляет меня с неправильным порядком сортировки.пытаясь создать виртуальное поле с помощью оператора CASE

select *, тип CASE, когда 'определенное' THEN количество ELSE '-' END из сумм;

таким образом, я могу использовать виртуальный столбец.

Проблема в том, что мне нужно взять хэш параметров, который мне потом придется вручную выводить в SQL, где предложение.Это звучит скучно, если нет лучшего способа сделать это.

Ответы [ 2 ]

0 голосов
/ 05 марта 2011

Я бы попробовал реализовать в вашей модели средство чтения атрибутов, например:

class YourModel < ActiveRecord::Base

  def amount
    (self.type == "specific_type") ? "-" : read_attribute(:amount)
  end

end
0 голосов
/ 05 марта 2011

В вашем контроллере:

def index
    @resources = []
    your_resources = Resource.find(:all)        
    your_resources.each do |resource|
        resource.amount = '-' if resource.amount = "specific_type"
        @resources << resource  
    end 
end 
...