Rails6にバージョンを上げた際に以下のエラーが発生しました。
NoMethodError (undefined method `sort!' for #<ItemGroup::ActiveRecord_AssociationRelation:0x000055dce8d83770> Did you mean? sort):
エラー箇所は以下になります。
ruby
1 def prepare_selections 2 @item_groups = @cc.item_groups.actives 3 @item_groups = @item_groups.where("item_groups.id not in (?)", @item_group.self_and_descendant_ids) if @item_group && @item_group.id 4 @item_groups.sort!{|a, b| a.fullpath <=> b.fullpath} 5 end
いろいろと調べて
Rails3では元のリレーションが配列の派生であるため、sort!でレシーバそのもののインスタンスに対して処理できたのに対し、Rails5ではリレーションオブジェクト自体はデータを持っていないため、sort!でレシーバに操作しようとするとエラーになっていた(そのため、代入演算子で再度データを定義する必要がある)
ということがわかったのですが、具体的にどう修正すればよいのかがわかりません。
どなたかご教授いただければ幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/24 08:11
2021/09/30 05:47