Как создать родительскую запись из дочернего элемента, если родительского элемента не существует?

Вы можете сделать это с помощью «просто регулярного выражения», как вы просили в комментарии:

(?<=sentence).*

(?<=sentence) является положительным утверждением lookbehind . Это соответствует определенной позиции в строке, а именно в позиции сразу после текста sentence, не сделав сам этот текст частью совпадения. Следовательно, (?<=sentence).* будет соответствовать любому тексту после sentence.

Это довольно приятная функция регулярного выражения. Однако в Java это будет работать только для подвыражений конечной длины, т.е. е. (?<=sentence|word|(foo){1,4}) является законным, но (?<=sentence\s*) не является.

1
задан BillyBib 15 January 2019 в 19:08
поделиться

1 ответ

В вашем методе создания в 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
0
ответ дан Gavin Esplin 15 January 2019 в 19:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: