LoginSignup
6
10

More than 5 years have passed since last update.

has_oneでassociationされたテーブルをまとめて登録・更新するtips

Last updated at Posted at 2015-06-11

例えば

app/models/user.rb


class User < ActiveRecord::Base

has_one :user_status, dependent: :destroy

app/models/user_status.rb


class UserStatus < ActiveRecord::Base

belongs_to :user

みたいなモデル設計に、ちょこちょこ出くわすかと思います。

そして、これら二つを同時に登録・更新するUIもあるあるです。
そういう時はこのようにすると良い感じにまとめてイケます。

app/models/user.rb


class User < ActiveRecord::Base

has_one :user_status, dependent: :destroy
accepts_nested_attributes_for :user_status

app/views/users/_form.haml


= for_for @user do |f|

= f.text_field :name

= f.password_field :password

= f.fields_for :user_status, 
@user.user_status || UserStatus.new do |s|

  = s.text_field :emotion


この場合、strong_parameterはuser_status_attributes[]となるので注意。

6
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
10