Ruby on rails 在Rails中,在嵌入式对象形式中使用validates_university_时,如何尊重:scope?
我有一个图书模型,它有很多章节(属于一本书) 我想确保章节标题的唯一性,但仅限于一本书的范围。关键在于,用于创建章节的表单嵌入到图书模型的表单中(图书模型接受:章节的_嵌套属性_) 在章节模型中: validates_uniqueness_of( :chapter_title, :scope => :book_id, :case_sensitive => false, :message => "No book can have multiple chapters with the same title.")Ruby on rails 在Rails中,在嵌入式对象形式中使用validates_university_时,如何尊重:scope?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有一个图书模型,它有很多章节(属于一本书) 我想确保章节标题的唯一性,但仅限于一本书的范围。关键在于,用于创建章节的表单嵌入到图书模型的表单中(图书模型接受:章节的_嵌套属性_) 在章节模型中: validates_uniqueness_of( :chapter_title, :scope => :book_id, :case_sensitive => false, :message => "No book can have multiple chapters
有人能解释一下怎么做吗?或者为什么会发生这种情况?这是因为Book获取的章节的Book\u id设置为NULL,并且在验证之前它没有设置它们的Book\u id b/c在这一步它没有id 第一种解决方案是使用Book.build\u chapter()方法,但它需要为每个章节分别调用一个方法 第二是使用和创建一本书,如:
book_attrs = {
:chapters_attributes => [
{ :title => 'Intro' },
{ :title => 'Core' },
{ :title => 'Outro'}
]
}
book = Book.create(book_attrs)
他不是这么说的吗?
book_attrs = {
:chapters_attributes => [
{ :title => 'Intro' },
{ :title => 'Core' },
{ :title => 'Outro'}
]
}
book = Book.create(book_attrs)