问题描述
|
使用导轨3:
在控制器中,我想为登录用户找到一个对象,如果存在,我想使用该对象,否则我想为该用户创建一个新对象,我该怎么做?
myObj = myObj.find(current_user.id)
如何检查对象是否存在?是否存在myObj.nil或myObj.exists?
解决方法
if myObj
myObj.find(current_user.id)
end
只有存在myObj
时,run2ѭ才会运行。
编辑:你也可以
if !myObj
myObj = ...
end
myObj.find(current_user.id)
如果不存在,将创建myObj
,然后运行myObj.find(current_user.id)
编辑
您应该使用此:
myObj.find_or_create(current_user.id)
假设myObj是一个ActiveRecord(数据库模型)对象。
,Ruby对象有零吗?方法。您可以像myObj.nil这样检查它是否存在?甚至只是myObj
,完成此操作的方法是将has_many关系添加到User对象,以便可以通过以下方式获取它们:
current_user.myObjs
如果模型不是直接连接而是通过其他对象连接,则可以添加:
has_many:myObjs,:through =>:another_object
如果用户属于某个帐户,并且该帐户具有许多myObjs对象,则将是这种情况,但是如果myObjs属于用户且用户has_many myObjs则不需要。