Rails4 Strong Parametersによって多段saveがエラーになった話
Rails4でStrong Parametersが導入されて大抵はpermitとかやれば解決できるんだけどそれだと足りなかったときの話
BookはAuthorを一人だけもつけれど、belongs_toにしたくないとき(Bookにauthor_idをもたせたくない?)
class Author < ActiveRecord::Base has_many :author_books has_many :books, through: :author_books end class Book < ActiveRecord::Base has_one :author_books has_one :author, through: :author_book end class AuthorBook < ActiveRecord::Base end
こんな感じになる。このときあるBookを生成してsaveできたらそのauthorも設定するようにしたいとき、
book = Book.new book.author = Author.first book.save
こういう書きかたがあるが、これはStrong Parameters周りでエラーを起こす。
対処は
class Book < ActiveRecord::Base has_one :author_books has_one :author, through: :author_book accepts_nested_attributes_for :author end
とすること