2015-06-19 38 views
1

我使用Sorcery在Rails中設置了身份驗證,並且我試圖創建一個模型,其中用戶的用戶標識鏈接爲輸入數據模型的引用,但是我得到錯誤:Rails中的Sorcery Gem的關聯錯誤

Couldn't find User without an ID 

它指的是下面的代碼:

def create 
    @user = User.find(params[:user_id]) 
    @certificate = @user.certificates.create(certificate_params) 
    redirect_to certificate_path(@certificate) 
end 

要回答我問我自己基本的問題,在用戶登錄...

回答

1

這實際上是一個非常奇怪的錯誤如果以上是真的你的代碼。您應該得到類似Couldn't find Bar with 'id'=的東西。以上錯誤通常只在您完全不提供參數find時給出,即。 User.find()

無論如何,這裏的底層問題是params[:user_id]不包含您期望的值,並且可能根本沒有任何值。您還沒有顯示出足夠的您的其他代碼,以確定這是爲什麼,但沒關係......

除非你希望人們能夠只是改變URL和證書添加一些其他用戶在你的系統中,那麼你不應該依靠params[:user_id]創建關聯的對象,你應該使用current_user--這就是完整的認證點。

所以:

def create 
    @certificate = current_user.certificates.create(certificate_params) 
    redirect_to certificate_path(@certificate) 
end