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」を使って関連するモデルクラスのレコードを一緒に作成する方法を紹介しました。

blog-page_footer_336




blog-page_footer_336




-BackEnd
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

laravel logo

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

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

rails

Ruby、Railsの時間に関するメソッドを使用してみた

はじめに 普段PHPのお仕事をしています、tonnyです。 半年程前からRuby on Railsの勉強を始めました。 今回はよく使う時間に関するメソッドついてまとめたいと思います。 目次 1 はじめ ...

postgresql

PostgreSQLでテーブルをパーティショニングする

1 はじめに2 パーティショニングとは3 PostgreSQLでのパーティショニング3.1 パーティションテーブルでの制約3.2 パーティショニングの種類4 パーティションテーブルを定義する4.1 古 ...

laravel logo

Laravelのブラウザテスト「Dusk」で非同期で重たい処理のテストを実装してみよう

1 はじめに2 JavaScriptの式で待機する2.1 テスト対象となるコード2.2 Duskのテストコード3 DOM要素の表示を待つ3.1 テスト対象となるコード3.2 Duskテストコードの実装 ...

rails

Ruby2.4でCookieを手動で復号する際に発生したエラーの対処

1 はじめに1.1 前提条件2 発生したエラー2.1 実際のコード2.2 エラー詳細2.3 原因3 どう対処したか3.1 修正後のコード はじめに こんにちは、onoです。 現在開発中のアプリケーショ ...

フォロー

blog-page_side_responsive

2017年12月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

アプリ情報

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