class RelatedList < ActiveRecord::Base
extend Enumerize
enumerize :list_type, in: %w(groups projects)
belongs_to :content
has_many :contents, :order => :position
end
Saya memiliki model ini di aplikasi rel saya yang memberi peringatan ketika saya mencoba membuat catatan di konsol.
PERINGATAN PERHATIAN: Opsi berikut di RelatedList.has_many Anda: deklarasi konten tidak berlaku lagi:: order. Silakan gunakan blok lingkup sebagai gantinya. Misalnya, berikut ini: has_many: spam_comments, condition: {spam: true}, class_name: 'Comment' harus ditulis ulang sebagai berikut: has_many: spam_comments, -> {where spam: true}, class_name: 'Comment'. (dipanggil dari di /Users/shivam/Code/auroville/avorg/app/models/related_list.rb:7)
Sepertinya Rails 4 memiliki sintaks baru: urutan untuk digunakan dalam model tetapi saya tidak dapat menemukan dokumentasinya di Rails Guides.
sumber
oder
daninclude
? Ini:{ order(:position), include(:track) }
melempar kesalahan pada koma.-> { order(name: :asc) }
list.contents.order('position desc')
yang bisa lebih efisien secara keseluruhan, dan bukan sebagai model yang mengganggu (dalam jawaban yang dipilih, daftar mengetahui bidang konten, di sini pengontrol mengetahuinya )Butuh beberapa saat bagi saya untuk memikirkan cara melakukan pemesanan dan memasukkan, saya akhirnya menemukan bahwa Anda merangkai pernyataan cakupan ,
sumber
Hanya berpikir saya akan menambahkan bahwa jika Anda memiliki argumen hash opsi, mereka harus mengejar lambda, seperti ini:
Butuh waktu satu menit untuk mencari tahu sendiri - mudah-mudahan ini membantu orang lain yang datang ke pertanyaan ini yang memiliki masalah yang sama.
sumber
has_many :items, -> { order 'name' }, through: :suppliers
Ini berfungsi untuk saya dengan Rails 4 & MongoDB
sumber
Sebagai alternatif, Anda dapat meletakkan
order
klausa pada model, misalnya:Menjadi
PS: Saya dapat
ArgumentError: wrong number of arguments (1 for 0)
saat melakukanhas_many :things, -> {}
.sumber