環境
- Ruby 2.6.3
- Ruby on Rails 6.0.1
#できること
has_one
でアソシエーションしている場合、
アソシエーション先のデータをcreate_テーブル名
メソッドで作成できる。
#前提
Authorモデルに対してBookモデルがhas_oneアソシエーションしています。
一人一冊、本を書いている状況です。
# author.rb
class Author < ActiveRecord::Base
attr_accessor :name :age
has_one :book
end
# book.rb
class Book < ActiveRecord::Base
attr_accessor :title
belongs_to :author
end
実例
author = Author.create(name: 'John', age: 30)
author.create_book(title: 'cooking book')
最後に
上記書いておいてではありますが、
create
するときは、
create!
, create_book!
のように書いたほうが良いと思います。
!
があると、バリデーションが失敗した際に例外を出してくれます。(参考)