2015-12-30 2 views
0

Этот вопрос состоит из двух частей:Проверьте, что запись не существует/восстановить существующую запись активной записи

Рассматривают активную запись связь, которая имеет Student - name:string, favorite_class:references и FavoriteClassname:string, abbrev:string.

Первый вопрос: При создании student записи и добавление favorite class (название и аббревиатура) Я хочу, чтобы проверить, что имя/Abbrev комбо существует, и если он делает загрузить один для этой ассоциации, в противном случае создать новый.

Второе: Когда я пытаюсь обновить (Пут) student Я хочу, чтобы иметь возможность передать abbrev из favorite class и посмотреть запись этой части (предполагающие Abbrevs уникальны) и использовать это, еще не в состоянии.

Я не вижу рельсы, способ выполнения этого типа операции.

ответ

0

Для первого вопроса, то хитрость заключается в том, чтобы использовать find_or_create метод:

#in the place where you create a new Student 
#this method return first entity from db, if it doesn't found, will create one 
fav_class = FavoriteClass.find_or_create(name: some_name, abbrev: some_abbrev) 
Student.create(name: some_student_name, favorite_class: fav_class) 

что-то подобное вы можете сделать для вашего второго вопроса. Пожалуйста, дайте мне более подробную информацию об этом.

Update 1

Если вы хотите обновить любимый класс ученика, вы можете сделать это следующим образом:

#I assume that you use latest vertion of rails of not, use .first instead of .take 
new_class = FavoriteClass.where(abbrev: some_abbrev).take 
student.update_attributes(favorite_class: new_class) if new_class 
+0

Например, мне нужно сделать запрос на путы, который принимает сокращения и воли загрузите класс на основе этого аббревиатура и обновите запись ученика. – user3186332

+0

@ user3186332, я обновил свой ответ. –