質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

1回答

2552閲覧

1つのモデルに対して複数レードを一括登録したい

og33

総合スコア14

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2018/08/05 06:43

編集2018/08/05 07:36

やりたいこと

1つのモデルに対して複数レードを一括登録したい
イメージ説明

試したこと・考えたこと

・やりたいことはフォームの一括登録であるので、それを調べたところ、以下のようにfields_forを利用したフォームの作り方を紹介した記事が多数見つかったが、今回やりたいことは、「form_for内で異なるモデルを編集できるようになる。」ことではない。やりたいことはまさしく下記のようなこと。
http://ruby-rails.hatenadiary.com/entry/20141208/1418018874#accepts_nested_attributes_for-form
・オブジェクトを保存したいレコード分作成して保存することを考えたが、力技すぎるので却下。

仕様

view:

= Time.zone.today.strftime('%Y/%m/%d') = form_for @new_tobanhyo do |f| - @tobanhyos[false].each do |tobanhyo| p = f.select :room_id, @rooms, :selected => tobanhyo.room.id = f.select :role_id, @roles, :selected => tobanhyo.role.id = f.date_field :start_of_period, value: Time.zone.today.strftime('%y/%m/%d') = "---------------------" - @tobanhyos[true].each do |tobanhyo| p = f.select :room_id, @rooms, :selected => tobanhyo.room.id = f.select :role_id, @roles, :selected => tobanhyo.role.id = f.date_field :start_of_period, value: Time.zone.today.strftime('%Y/%m/%d') = f.submit

もちろんこれでは一括登録はできず。
モデル:

ActiveRecord::Schema.define(version: 20180603012133) do create_table "roles", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| t.string "name" t.datetime "created_at", null: false t.datetime "updated_at", null: false end create_table "rooms", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| t.string "name" t.datetime "created_at", null: false t.datetime "updated_at", null: false end create_table "tobanhyos", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| t.integer "room_id" t.integer "role_id" t.boolean "fixed" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.date "start_of_period" end end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

内部的な仕組みがどうなっているかはしりませんが、おそらく以下のコードで実現できるかと思います。

ruby

1 2 @params=params["param"] 3 4 model1=Model.new(@params) 5 model2=Model.new(@params) 6 7 model1.save 8 model2.save 9

parameterの受け取りの部分や、Modelの部分は質問者さんのプログラムにしたがって変えてください

投稿2018/08/05 06:51

FumiakiNakao

総合スコア180

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問