我目前正在使用此代码块来检索用户或创建一个新用户:
user.save
但是,我不一定希望将新用户持久保存到数据库中。
是否有类似“find_or_new_by”的东西只会持续存在:
<a href="#section1">sec1</a>
<a href="#section2">sec2</a>
<a href="#section3">sec3</a>
答案 0 :(得分:7)
您似乎在寻找#find_or_initialize_by
。命名方法不是调用create
,而是调用new
。要保存对象(假设它已初始化但未找到),您可以根据需要调用save
。
如果您查看该方法的源代码,它完全您正在寻找的内容!
def find_or_initialize_by(attributes, &block)
find_by(attributes) || new(attributes, &block)
end
在我提供的方法链接的文档页面上,我无法找到该方法的爆炸(!
)版本。使用爆炸将引发错误。根据您的使用情况,您可能根本不需要它。
答案 1 :(得分:1)
试试这个
user = User.where(email: params[:email]).first_or_initialize
如果不存在,它只会初始化它。