質問: @subject.costs.order(:id) end ``` を追記しまして、views/subjects/ show.html.erb ではcostsテーブルの「id」順に並べることができました。 符号 材質 / 部品NO 品名 型式 圧力 サイズ 数量 単位 仕入先A 仕入先B 仕入先C 売価 1 ステンレス 商品A F-065 10K 300A 5 P 1,000 2,000 3,000 6,000 2 ステンレス hogehoge F-078 10K 350A 3 P 2,000 3,000 4,000 9,000 3 ステンレス 商品C F-084 10K 400A 6 P 3,000 0 5,000 8,000 ただ、その後「編集」ボタンを押下したところ、views/subjects/edit.html.erbの_form.html.erbでは、レコードの順番が入れ替わったままでした。以下の状態でした。 符号 材質 / 部品NO 品名 型式 圧力 サイズ 数量 単位 仕入先A 仕入先B 仕入先C 売価 1 ステンレス 商品A F-065 10K 300A 5 P 1,000 2,000 3,000 6,000 3 ステンレス 商品C F-084 10K 400A 6 P 3,000 0 5,000 8,000 2 ステンレス hogehoge F-078 10K 350A 3 P 2,000 3,000 4,000 9,000 このページもcostsテーブルの「id」順に並べることはできますでしょうか? 現状は、updateメソッド実行後にcostsテーブルのレコードの順番が入れ替わっている状況です。 ``` def update respond_to do |format| if @subject.update(subject_params) format.html { redirect_to @subject, notice: 'Subject was successfully updated.' } format.json { render :show, status: :ok, location: @subject } else format.html { render :edit } format.json { render json: @subject.errors, status: :unprocessable_entity } end end end ``` 宜しくお願い致します。
回答: yasu さんが書かれたように、望んだ順序にするためには必ず `order` を付けましょう。 とくに、PostgreSQLをお使いのようですが、コイツは追記型でデータを書き込むので、更新すると「テーブル末尾に新たな内容でレコードを追加し、元のレコードを使わないようにする」という動作をします。