2010-01-14 9 views
8

¿Es posible tener named_scope registros de devolución únicos para una determinada columna?Named_scope in rails unique records?

por ejemplo

named_scope :unique_styles, :order =>"title desc", :limit => 3 

Eso me dará tres estilos, pero lo que si quiero para asegurarse de que el título es diferente? En este caso, puede haber tres registros con el mismo estilo, quiero que este named_scope solo proporcione valores únicos de título.

Así ["style 1", "style 1", "style 1"] no es posible, que va a obligar a sí mismo para dar ["style 1", "some style 2", "maybe another 3"]

  • creo group puede hacerlo y estoy usando eso por ahora. Si alguien tiene algún comentario, eso sería genial.

Respuesta

13

es probable que desee explorar la opción: grupo de buscadores y named_scopes:

named_scope :unique_styles, :order => "title desc", :limit => 3, :group => "title" 
+1

Es ": grupo" no ": group_by" descubrió esto y funcionó, ¡gracias! –

+0

Me sirve bien para no verificar los documentos primero :) – workmad3

2

Si realmente lo que quieres es los títulos, esta oughta lo hacen por MySQL. (No he mirado en si otros motores soportan distintos.)

named_scope :unique_styles, :select => 'DISTINCT title', :order => 'title desc', :limit => 3 
3

para los carriles 3 tíos más que puede hacer que el estilo de conexión en cadena:

scope :unique_styles, order("title DESC") 
         .select("DISTINCT title") 
         .limit(3)