RailsアプリのActiverecordで、一括更新後テーブルのレコード(id)の順番が入れ替わってしまいます。
以下のように新規登録を行いました。
その後、「編集」ボタンを押下して、商品名を「商品B」から「hogehoge」に変更しました。
「2 ステンレス 商品B F-078 10K 350A 3 P 2,000 3,000 4,000 9,000」
「2 ステンレス hogehoge F-078 10K 350A 3 P 2,000 3,000 4,000 9,000」
その後「登録」ボタンを押下したところ、レコードの順番が入れ替わって表示されました。
costsテーブルの中身も確認したところ、やはりレコードの順番が入れ替わって登録(更新)されていました。
考えられる原因はありますでしょうか?
思い当たる原因がありましたらアドバイス頂きたいです。
URLで申し訳ありません。
何卒宜しくお願い致します。
https://github.com/hiro-hvk/sample_order_app
新規登録時の入力内容
符号 材質 / 部品NO 品名 型式 圧力 サイズ 数量 単位 仕入先A 仕入先B 仕入先C 売価
1 ステンレス 商品A F-065 10K 300A 5 P 1,000 2,000 3,000 6,000
2 ステンレス 商品B 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
更新時の入力内容
符号 材質 / 部品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
更新後の表示
符号 材質 / 部品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_contoroller.rb
def index
@costs = Cost.all.order(:id)
end
subjects_contoroller.rb
private
def set_subject
@subject = Subject.find(params[:id])
@subjects = @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
宜しくお願い致します。