2017-03-19 56 views
0

我試圖讓這個錯誤下面的Rails找到對象ID上的has_many協會

誤差與CURRENT_USER但軌道SHOS相關聯的事務ID:

ActiveRecord::RecordNotFound (Couldn't find Transaction with id=92 [WHERE "transactions"."user_id" = 24])

iv'e嘗試使用地點和剛該事務和一個條件比較transaction.user_id與current_user.id但顯示錯誤!

有人對此類問題有任何暗示嗎?

model user 

user has_many transactions 

model transaction 

transaction belongs to user 


transaction controller 

def new 
@transaction = Transaction.new 
end 

def create 

@transaction = Transaction.build_user 

end 



def show 

@transaction = current_user.transactions.find(params[:id]) 

end 
+0

你複製粘貼嗎?如果是這樣的話:您確實認識到您的交易模型中存在類型錯誤?這不是屬於用戶的「交易」,而是「交易」。那裏沒有「n」。 –

+0

無論如何,謝謝 – nakapaka1

+0

在你的''交易'與ID'92'沒有'user_id'。檢查使用你的控制檯輸入'rails c'。然後找到ID爲'92'的'Transaction',看它是否包含Emu包含的'user_id' – Emu

回答

0

正如許多評論中指出build_user確實創建新的用戶實例(但不保存)。此外,我認爲build_user不是類方法,而是實例方法。因此Transaction.build_user應該引發'未定義的方法'異常。此外,build_user會返回一個User實例,所以即使您的代碼是@transaction = Transaction.new.build_user @transaction也會是新創建的User實例。

另外,別人在評論中已經指出了什麼,您的交易不一定會與current_user相關聯,您可以在同一會話的後續調用中像這樣獲取它,相反,並且假設您已正確構建並保存用戶,您需要以這個「新用戶」的身份登錄。