Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 检查记录是否不存在';t存在/检索现有记录活动记录_Ruby On Rails_Rest_Activerecord_Rails Postgresql - Fatal编程技术网

Ruby on rails 检查记录是否不存在';t存在/检索现有记录活动记录

Ruby on rails 检查记录是否不存在';t存在/检索现有记录活动记录,ruby-on-rails,rest,activerecord,rails-postgresql,Ruby On Rails,Rest,Activerecord,Rails Postgresql,这个问题分为两部分: 考虑一个活动记录关系,该关系具有Student-name:string,favorite\u class:references和FavoriteClassname:string,abbrev:string 第一个问题:当创建一个学生记录并添加一个喜爱的类(name和abbrev)时,我想检查这个name/abbrev组合是否存在,以及它是否为此关联加载了该组合,否则创建一个新的组合 第二:当我尝试更新(放置)学生时,我希望能够通过最喜欢的课程的abbrev,并按该部分查找记

这个问题分为两部分:

考虑一个活动记录关系,该关系具有
Student
-
name:string,favorite\u class:references
FavoriteClass
name:string,abbrev:string

第一个问题:当创建一个
学生
记录并添加一个
喜爱的类
(name和abbrev)时,我想检查这个name/abbrev组合是否存在,以及它是否为此关联加载了该组合,否则创建一个新的组合

第二:当我尝试更新(放置)学生时,我希望能够通过
最喜欢的课程的
abbrev
,并按该部分查找记录(假设abbrev是唯一的),然后使用该部分,否则失败


我看不到rails做这种操作的方式

对于第一个问题,诀窍是使用以下方法:

对于第二个问题,您可以做类似的事情。请给我更多的细节

更新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

例如,我需要发出一个put请求,该请求接受一个abbrev,并将基于该abbrev加载类并更新学生记录。
#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