Railsで開発している時に、データ保存をしたはずなのに、rollebackされてその原因が分からないことがあるかと思います。
私の場合、createメソッドでsaveしている状況ですが、パラメータは正しく渡っており、エラーメッセージも表示されていないのにデータベースには保存されていませんでした。
結論としては、save!と入力することでエラーの原因が分かります。
やり方としては、現在のcreateアクションに記載されているsaveに!を付けるだけです。
item_controller.rb
def create
@item = Item.new(items_params)
if @item.save
flash[:success] = "商品を登録しました"
redirect_to items_path
else
flash.now[:danger] = "登録に失敗しました"
render("admin/items/new")
end
end
上記は新規商品を登録するための記述です。このsaveの部分をsave!と変更すればOKです。
save!とした状態で実際に何か商品を登録しようとすると、ターミナル上にエラーメッセージが表示されます。
私の場合は、以下のメッセージが表示され、メーカー名が空白になっていたのでエラーになっていたと分かりました。
ターミナル
ActiveRecord::RecordInvalid: Validation failed: Content can't be blank, Maker can't be blank
エラーメッセージは表示されないのにsaveできない時は、save!としてみてエラー内容を表示させて原因を突き止めてみることが大切ですね。