class RelatedList < ActiveRecord::Base
extend Enumerize
enumerize :list_type, in: %w(groups projects)
belongs_to :content
has_many :contents, :order => :position
end
Tengo este modelo en mi aplicación de rieles que lanza una advertencia cuando trato de crear registros en la consola.
ADVERTENCIA DE DEPRECATION: Las siguientes opciones en su RelatedList.has_many: declaración de contenido están obsoletas:: order. En su lugar, utilice un bloque de alcance. Por ejemplo, lo siguiente: has_many: spam_comments, condiciones: {spam: true}, class_name: 'Comment' debe reescribirse como sigue: has_many: spam_comments, -> {where spam: true}, class_name: 'Comment'. (llamado desde /Users/shivam/Code/auroville/avorg/app/models/related_list.rb:7)
Parece que Rails 4 tiene una nueva sintaxis de orden para usar en modelos, pero parece que no puedo encontrar la documentación en Rails Guides.
fuente
oder
yinclude
? Esto:{ order(:position), include(:track) }
arroja un error en la coma.-> { order(name: :asc) }
list.contents.order('position desc')
que puede ser más eficiente en general, y no como modelo intrusivo (en la respuesta votada, la lista conoce un campo de contenido, aquí el controlador lo sabe )Me tomó un tiempo descubrir cómo ordenar e incluir, finalmente descubrí que encadena las declaraciones de alcance ,
fuente
Solo pensé en agregar que si tiene alguna opción de argumentos hash, deben ir después de la lambda, así:
Me tomó un minuto resolver esto por mí mismo; espero que ayude a cualquier otra persona que llegue a esta pregunta y tenga el mismo problema.
fuente
has_many :items, -> { order 'name' }, through: :suppliers
Esto me funciona con Rails 4 y MongoDB
fuente
Alternativamente, puede poner la
order
cláusula en el modelo, por ejemplo:Se convierte
PD: lo tengo
ArgumentError: wrong number of arguments (1 for 0)
al hacerhas_many :things, -> {}
.fuente