在我的一个控制器中,我正在做:
user = User.find_or_initialize_by_email(@omniauth['info']['email'])
然后我需要知道是否找到或初始化了记录。我试过这个:
if user
else
end
但这不起作用,因为总会有用户。找到或初始化找到或初始化的正确方法是什么?
由于
答案 0 :(得分:7)
您应该可以使用persisted?
:
if user.persisted?
edgeguides.rubyonrails.org说明以下关于find_or_initialize_by
:
find_or_initialize_by方法将像find_or_create_by一样工作 但它会调用new而不是create。这意味着一个新的模型 实例将在内存中创建,但不会保存到数据库中。
答案 1 :(得分:3)
@ pdoherty926的替代方案是使用new_record?
方法。
if user.new_record?
它会从persisted?
返回相反的真值,因此您可以选择哪个适用于条件逻辑。 (例如,我倾向于发现if
比unless
更具可读性。)