У меня есть модель Книги, в которой есть_ главы (которые принадлежат_Книге).
Я хочу обеспечить уникальность названий глав, но только в рамках одной книги. Суть в том, что форма для создания глав встроена в форму модели Book (модель Book принимает accept_nested_attributes_for: chapters).
В модели главы:
validates_uniqueness_of(
:chapter_title,
:scope => :book_id,
:case_sensitive => false,
:message => "No book can have multiple chapters with the same title.")
Однако, когда я отправляю форму создания книги (которая также включает в себя несколько встроенных форм глав), если заголовок главы существует в другой главе для другой книги, я не сдаю тест проверки.
Book.create( :chapters => [ Chapter.new(:title => "Introduction"), Chapter.new(:title => "How to build things")
=> Book 1 successfully created
Book.create( :chapters => [ Chapter.new(:title => "Introduction"), Chapter.new(:title => "Destroy things")
=> Book 2 fails to validate
second_book = Book.create( :chapters => [ Chapter.new(:title => "A temporary Introduction title"), Chapter.new(:title => "Destroy things")
=> Book 2 succesfully created
second_book.chapters[0].title= "Introduction"
=> success
second_book.chapters.save
=> success
second_book.save
=> success
Может кто-нибудь пролить свет на то, как это сделать? Или почему это происходит?