Вы можете сделать это с помощью «просто регулярного выражения», как вы просили в комментарии:
(?<=sentence).*
(?<=sentence)
является положительным утверждением lookbehind . Это соответствует определенной позиции в строке, а именно в позиции сразу после текста sentence
, не сделав сам этот текст частью совпадения. Следовательно, (?<=sentence).*
будет соответствовать любому тексту после sentence
.
Это довольно приятная функция регулярного выражения. Однако в Java это будет работать только для подвыражений конечной длины, т.е. е. (?<=sentence|word|(foo){1,4})
является законным, но (?<=sentence\s*)
не является.
В вашем методе создания в NotesController вы можете сделать что-то вроде
parent_chapter = Chapter.find_or_create_by(name: 'How To Program')
# parent_chapter is now either the existing chapter by that name or a new one
new_note = Note.new(params[:note])
new_note.chapter = parent_chapter # or new_note.chapter_id = parent_chapter.id
new_note.save
Метод find_or_create_by Я думаю, что вам здесь нужно. Если этот метод устарел в вашей версии rails, попробуйте first_or_create , например,
parent_chapter = Chapter.where(name: 'How To Program').first_or_create