2011-08-07 11 views
13

Estoy intentando representar un objeto como json, incluidos los atributos anidados y ordenarlos por el atributo created_at.Los raíles se representan como json, incluyen un atributo anidado y ordenan

que estoy haciendo esto utilizando el código:

format.json { render :json => @customer, :include => :calls} 

Cómo puedo llamadas ordenar por atributo created_at?

+0

supongo que se puede definir el tipo por defecto, mientras que la definición de la relación. http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_many – rubish

+0

Lo siento por ser un gramatical nazi, pero render es un término gráfico. La terminología correcta es codificar. – tjameson

+3

@tjameson Están llamando al método render (: json), creo que es seguro referirse a él como renderizando JSON en este contexto. – Gazler

Respuesta

38

Si piensa cómo funciona Rails, las llamadas son solo un método que se relaciona con el modelo de llamada. Hay algunas maneras en que puedes hacer esto. Una es establecer la opción de orden en la asociación. Una de ellas es para cambiar el ámbito predeterminado del modelo de llamadas a nivel mundial, otro crea un nuevo método en el modelo de atención al cliente que devuelve las llamadas

Método 1 (útil si desea hacer cualquier cosa con las llamadas antes de la codificación.):

class Customer < ActiveRecord::Base 
    has_many :calls, :order => "created_at DESC" 
end 

ACTUALIZACIÓN

Para carriles 4 y por encima de uso:

class Customer < ActiveRecord::Base 
    has_many :calls, -> { order('created_at DESC') } 
end 

Método 2:

class Call < ActiveRecord::Base 
    default_scope order("created_at DESC") 
end 

Método 3:

class Call < ActiveRecord::Base 
    scope :recent, order("created_at DESC") 
end 

class Customer < ActiveRecord::Base 
    def recent_calls 
    calls.recent 
    end 
end 

continuación, puede utilizar:

format.json { render :json => @customer, :methods => :recent_calls} 
+0

Limpio, limpio, +1 – apneadiving

+0

Gracias! Servicial. – lxcid

+0

: métodos, perfecto. – thatmiddleway

Cuestiones relacionadas