このエントリーをはてなブックマークに追加

2017年2月7日火曜日

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

こんにちは。h_ono_222です。

フォームからレコードを作成する際に、関連するレコードを一緒に作成する基本的な方法をまとめます。

1. モデルの作成

# user.rb
class User < ActiveRecord::Base
  has_many :books
  accepts_nested_attributes_for :books
end

# book.rb
class Book < ActiveRecord::Base
  belongs_to :user
end

2. コントローラを作成する

# users_controller.rb
class UsersController < ApplicationController
  def new
    @user = User.new
    @user.books.build
  end

  def create
    @user.new(user_params)
    if @user.save
      redirect_to @user
    else
      render :new
    end
  end

  private
  def user_params
    params.require(:user).permit(books_attributes: [:name])
  end
end

3. フォームを作成する

# _form.html.erb
<%= form_for(@user) do |f| %>
  <%= f.fields_for :books do |field| %>
    <%= field.label :name %>
    <%= field.text_field :name %>
  <% end %>
  <%= f.submit %>
<% end %>

以上です。

0 件のコメント:

コメントを投稿