1. ホーム
  2. ruby-on-rails-4

Rails 4のデフォルトスコープ

2023-11-30 03:38:08

質問内容

私のRailsアプリでは、次のようなデフォルトのスコープがあります。

default_scope order: 'external_updated_at DESC'

Rails 4にアップグレードしたのですが、当然ながら以下のような非推奨の警告が表示されます "ハッシュで#scopeや#default_scopeを呼び出すことは非推奨です。スコープを含むラムダを使用してください."。他のスコープはうまく変換できたのですが、default_scopeの構文がよくわかりません。これではうまくいきません。

default_scope, -> { order: 'external_updated_at' }

どのように解決するのですか?

のみであるべきです。

class Ticket < ActiveRecord::Base
  default_scope -> { order(:external_updated_at) } 
end

default_scopeはブロックを受け取りますが、scope()にはnameとblockの2つのパラメータがあるため、lambdaが必要です。

class Shirt < ActiveRecord::Base
  scope :red, -> { where(color: 'red') }
end