環境
- 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!のように書いたほうが良いと思います。
!があると、バリデーションが失敗した際に例外を出してくれます。(参考)