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