class RelatedList < ActiveRecord::Base
extend Enumerize
enumerize :list_type, in: %w(groups projects)
belongs_to :content
has_many :contents, :order => :position
end
У меня есть эта модель в моем приложении rails, которое выдает предупреждение, когда я пытаюсь создать записи в консоли.
ПРЕДУПРЕЖДЕНИЕ ОБ УСТАРЕВАНИИ: Следующие параметры в объявлении RelatedList.has_many: contents устарели:: order. Вместо этого используйте блок области видимости. Например, следующее: has_many: spam_comments, условия: {spam: true}, class_name: 'Comment' следует переписать следующим образом: has_many: spam_comments, -> {where spam: true}, class_name: 'Comment'. (вызывается из /Users/shivam/Code/auroville/avorg/app/models/related_list.rb:7)
Похоже, в Rails 4 появился новый синтаксис: order для использования в моделях, но я не могу найти документацию в Rails Guides.
источник
oder
иinclude
? Это:{ order(:position), include(:track) }
выдает ошибку в запятой.-> { order(name: :asc) }
list.contents.order('position desc')
это в целом более эффективно, а не как навязчивую модель (в проголосованном ответе list знает поле контента, здесь контроллер знает это )Мне потребовалось некоторое время, чтобы выяснить, как сделать заказ и включить, в конце концов я обнаружил, что вы связываете операторы области действия ,
источник
Просто подумал, что я бы добавил, что если у вас есть какие-либо хэш-аргументы, они должны идти после лямбда, например:
У меня ушла минута, чтобы разобраться в этом сам - надеюсь, это поможет любому, кто подойдет к этому вопросу с той же проблемой.
источник
has_many :items, -> { order 'name' }, through: :suppliers
У меня это работает с Rails 4 и MongoDB
источник
В качестве альтернативы вы можете поместить
order
предложение в модель, например:Становится
PS: Получил
ArgumentError: wrong number of arguments (1 for 0)
когда делаюhas_many :things, -> {}
.источник