我有一個名爲Invitation
的模型,它具有一個名爲code
的屬性。該應用程序的目標是通過輸入某處的代碼找到正確的邀請。即使查詢正確,Activerecord無法找到按屬性的模型
但是,我的問題是,即使輸入是正確的,ActiveRecord似乎無法在數據庫中查詢時發現任何結果。我創造了這個小測試來說明這個問題:
ruby-1.9.2-p290 :003 > code = Invitation.first.code
Invitation Load (0.4ms) SELECT "invitations".* FROM "invitations" LIMIT 1
=> "86f50776bf"
所以在這一點上我在查詢的變量
ruby-1.9.2-p290 :004 > i = Invitation.where(:code => code)
Invitation Load (0.2ms) SELECT "invitations".* FROM "invitations" WHERE "invitations"."code" = '86f50776bf'
=> []
和響應加載這一邀請的代碼是一個空數組即使代碼直接來自數據庫。當使用code == Invitation.first.code
來查看這些值是否相等時,它會返回true
。我已經檢查過Ruby和數據庫的數據類型,它們都是Strings。
這是什麼原因造成的?我該如何解決這個問題?
如果直接執行該SQL會發生什麼? – tadman
同樣,雖然 - 我忘了提及 - 當我使用LIKE而不是=它找到它時。 – Marco
要添加,這是首先生成「代碼」的代碼(在模型初始化時):'self.code = ActiveSupport :: SecureRandom.hex(5)if self.code.blank?'。之後我已經嘗試過to_s,但是這沒有效果。 – Marco