Railsでの実装で「ん?」と思ったのでご質問させてください。
sortメソッドの戻り値についてなのですが、Rails3で以下の実装をしたところ
@model = Model.paginate(:page => params[:page]) @model.sort!{|a, b| a.code.to_i <=> b.code.to_i}
sort!に通した@modelのオブジェクトはpaginateのインスタンスオブジェクトであることに対して
Rails5での以下の実装では
@model = Model.paginate(:page => params[:page]) # sortの破壊的メソッドをRelationクラスのオブジェクトに対して使うとエラーになる? @model = @model.sort{|a, b| a.code.to_i <=> b.code.to_i}
sort後の@modelのオブジェクトはArrayになっています。
上記の観点から以下の不明点があるのですが、どなたかご存じの方はいらっしゃいますでしょうか。
- sortの後にArrayとなってしまうのはRails3以降の仕様変更によるものか
- でなければ何故Rails3では元のオブジェクトのクラスインスタンスを保持できているのか
- Rails3では使えた破壊的sortがRails5で使えなくなっているのはなぜか
ネットで検索しても見つからないため、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/02 04:50
2019/12/02 04:51
2019/12/02 04:57