检查记录是否存在/检索现有记录活动记录

时间:2015-12-30 02:02:30

标签: ruby-on-rails rest activerecord rails-postgresql

这个问题分为两部分:

考虑具有Student - name:string, favorite_class:referencesFavoriteClass name:string, abbrev:string的有效记录关系。

第一个问题:在创建student记录并添加favorite class(名称和缩写)时,我想检查该名称/缩写组合是否存在,以及是否为该关联加载了该名称,否则会创建一个新的。

第二:当我尝试更新(Put)student时,我希望能够传递abbrev的{​​{1}}并按该部分查找记录(假设缩写是独一无二的)并使用它,否则失败。

我没有看到执行此类操作的rails方式。

1 个答案:

答案 0 :(得分: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)
你可以为你的第二个问题做类似的事情。请给我更多详细信息。

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