我有一種情況,用戶可以請求邀請,但前提是系統中沒有請求。如果他們請求邀請,則invitation.sender_id
設置爲"0"
,並且如果他們收到來自用戶的邀請,則invitation.sender_id
設置爲current_user.id
,其始終爲>0
。回調在Rails 3.2中沒有像預期的那樣工作
的invitation.rb
模型before_create :recipient_has_requested
和回調:
def recipient_has_requested
if Invitation.exists?(recipient_email: :recipient_email, sender_id: 0)
errors.add :recipient_email, 'An invitation has already been sent to that email address.'
end
end
當我檢查日誌中的SQL,我看到:
Invitation Exists (0.0ms) SELECT 1 AS one FROM "invitations" WHERE "invitations"."recipient_email" = 'recipient_email' AND "invitations"."sender_id" = 0 LIMIT 1
我的理解應該返回'true'
回調,防止新的邀請被保存。但是,查看數據庫顯示我有多個邀請請求,全部來自同一個電子郵件地址,並且全部使用invitation.sender_id = 0
。
我是新來的,所以任何幫助將不勝感激。回調爲什麼會返回意想不到的結果?
==編輯==
我認爲這裏的邏輯是相反的。回調是找到符合條件的記錄,因此返回true
。
任何人都可以看看邏輯並告訴我如何寫它,所以它返回false
?