BackEnd

関連するモデルのレコードを一緒に作成する方法

投稿日:

はじめに

フォームからレコードを作成する際に、関連するモデルのレコードを一緒に作成したい場合があると思います。
(例えばbookレコードとauthorレコードなど)
今回はRailsで一度に関連するモデルのレコードを一緒に作成する方法を紹介します。

前提条件

ruby 2.4.1
rails 5.1.4

実装

まず、モデルクラスを作成します(migrationファイルはあるものとします)

モデルの作成

今回はbookクラスとauthorクラスを作成します。
それぞれの内容は下記のとおりです。

 
通常のリレーションに加えて、親であるauthorクラスには「accepts_nested_attributes_for :books」の一文を追加します。

コントローラの作成

今回はauthorのみコントローラを作成します。
内容は下記のとおりです。

 
#newではauthorクラスのインスタンスを作成後に「build」でbookクラスのインスタンスを1つ作成しています。
また、Strong Parametersにbook用の項目(books_attributes: [:name])を追加します。

Viewの作成

authorクラスのフォームを作成します。
内容は下記のとおりです。

 
「f.fields_for」以下でbookクラスのパラメータを入力するテキストボックスを作成しています。

さいごに

今回は「accepts_nested_attributes_for」を使って関連するモデルクラスのレコードを一緒に作成する方法を紹介しました。

page_footer_300rect




page_footer_300rect




-BackEnd
-

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

laravel logo

Laravelで画像アップロード実装が楽になるかもしれないlaravel-imageup

1 はじめに2 環境3 導入4 実装5 個人的にハマったこと5.1 配列はダメ5.2 PHPStanで引っかかる6 さいごに7 おすすめ書籍 はじめに こんにちは。webアプリケーションを作る際にファ ...

laravel logo

Laravelの開発環境構築

1 はじめに2 開発環境構築2.1 Homestead2.2 Laradock3 Laradockで開発環境構築3.1 Laradockのダウンロード3.2 コンテナの設定ファイルを作成3.3 コンテ ...

rails

【Puma】アプリサーバのチューニング

1 はじめに2 チューニングで注意する項目3 子プロセスの数3.1 最低3つの子プロセスを割り当てる3.2 最大子プロセス数3.3 CPUコア数と子プロセス数3.4 なぜPumaの子プロセス数を増やす ...

【Git】マージコミットを消したい

1 はじめに2 例えばこんなことってないでしょうか?3 マージコミットを消す4 さいごに はじめに こんにちは、tonnyです。 今回はGitのケーススタディ的なものを書きたいと思います。 反面教師と ...

laravel logo

[Laravel] middlewareでHTTPリクエストの前後に処理を入れる

1 はじめに2 middlewareとは3 実装3.1 middleware作成3.2 コード実装4 middleware定義4.1 常に呼び出す4.2 特定のURLにアクセスした時のみ呼び出す4.3 ...

フォロー

follow us in feedly

page_side_300rect

2017年12月
« 11月 1月 »
 12
3456789
10111213141516
17181920212223
24252627282930
31 

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。