我有以下的用戶模型:find_or_create_by與屬性,它的存在:在Rails的真實
class User < ActiveRecord::Base
validates :email, presence:true
end
當我這樣做:
@user = User.find_or_create_by(:email => params[:email])
我是做@ user.nil?爲了看看用戶是存在的,但它不是作爲心想:
puts @user.inspect
--> #<User id: nil, email: "", created_at: nil, updated_at: nil>
爲什麼一個用戶被創建,即使不保存在數據庫?我怎樣才能確保@user是「無」? @ user.id.nil?
感謝
那麼,我將如何檢查@user是否存在或已經被創建?我不在乎它是否已經創建或位於數據庫中,但我想知道它不是「無」,因此它的ID不是零例如? –
'find_or_create'將*總是*返回一個用戶記錄,所以'@ user'將永遠不會被'nil'。如果用戶有一個ID(不是零),那麼它已經被保存到數據庫。如果你想知道用戶是否是新創建的,你可以使用這個技巧'@ user.instance_variable_get(:@ new_record_before_save)'。 –
聽起來像你可能只需要一個條件,如'if @user && @ user.persisted?' –