[解決済み] Rails 4のhas_manyとorderの非推奨の警告
質問
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の宣言で非推奨です。 RelatedList.has_many :contents宣言の次のオプションは非推奨です: :order. 代わりにスコープブロックを使用してください。たとえば、次のようになります: has_many :spam_comments, conditions: { spam: true }, class_name: 'コメント'. は次のように書き換えてください。 has_many :spam_comments, -> {。 where spam: true }, class_name: 'コメント'. . (call from at /Users/shivam/Code/auroville/avorg/app/models/related_list.rb:7).
Rails 4にはモデルで使う新しい:order構文があるようですが、Rails Guidesにドキュメントがないようです。
どのように解決するのですか?
Rails4では
:order
は非推奨となり、質問で投稿された警告にあるように、ラムダスコープブロックに置き換える必要があります。 もうひとつ注意すべき点は、このスコープブロックは、たとえば
dependent: :destroy
などの他の関連付けオプションの前に渡される必要があることです。
これを試してみてください。
has_many :contents, -> { order(:position) } # Order by :asc by default
注文の方向を指定する場合、つまり、どちらかの
asc
または
desc
を、@joshua-coady や @wsprujit が提案しているように、使ってみてください。
has_many :contents, -> { order 'position desc' }
または、ハッシュ形式を使用します。
has_many :contents, -> { order(position: :desc) }
さらに参考として
のアクティブレコードのスコープ
has_many
.
関連
-
[解決済み】コントローラでJSONをレンダリングする
-
[解決済み】Webpacker::Manifest::MissingEntryError【クローズド
-
[解決済み] PG::ConnectionBad - サーバーに接続できませんでした。接続が拒否されました。
-
[解決済み] Railsはsaveでモデル内の検証をスキップしますか?
-
[解決済み] サーバーはRailsで既に稼働している
-
[解決済み] RubyとRailsの "Date.today "フォーマット
-
[解決済み] 構文エラー "構文エラー、予期しない入力終了、keyword_endを期待 (SyntaxError)"
-
[解決済み] ActionController::RoutingError: 初期化されていない定数MicropostsController
-
[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。
-
[解決済み] Rails I18n バリデーション非推奨の警告
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 新規ユーザー作成時に ActiveModel::ForbiddenAttributesError が発生する。
-
[解決済み] Mac OS Xにhomebrewがインストールされているかどうかを確認する方法
-
[解決済み] デバイスを使用する現在のユーザーメソッド
-
[解決済み] heroku push rejected, failed to compile Ruby/rails app
-
[解決済み] Rails ExecJS::ProgramError in Pages#home?
-
[解決済み] nil:NilClass の未定義メソッド `each' - しかし、なぜ?
-
[解決済み] Herokuの問題 : あなたが探しているページは存在しません。
-
[解決済み] railsアプリケーションでCookieのオーバーフロー?
-
[解決済み] Railsコントローラからホスト名を取得する
-
[解決済み] Rails 4で、以前のバージョンのRailsでattr_accessibleを使用していた状況に遭遇した場合、Forbidden Attributes Errorが発生する。