0
@item = Item.find(params [:id]),但這返回一個值,這對我所有的登錄用戶,但我希望它基於登錄用戶的身份證號碼我如何使我的項目功能依賴ie user_id
@item = Item.find(params [:id]),但這返回一個值,這對我所有的登錄用戶,但我希望它基於登錄用戶的身份證號碼我如何使我的項目功能依賴ie user_id
我在理解您的問題時遇到了一些麻煩,所以如果我錯誤地解釋了您的問題,我很抱歉。
您正在尋找一種方法將搜索限制爲僅屬於當前登錄用戶的項目?
這首先需要像這樣的項目和用戶,東西之間的關聯:
class User < ActiveRecord::Base
has_many :items
end
class Item < ActiveRecord::Base
belongs_to :user
end
然後,假設您可以訪問當前登錄的使用current_user
用戶,您可以將搜索範圍限制,像這樣:
@item = current_user.items.find(params[:id])
編輯:如果您有存儲在會話session[:user_id]
user_ID的,那麼你就可以做到以下幾點:
@user = User.find(session[:user_id])
@item = @user.items.find(params[:id])
無論哪種方式,過程都是相同的:以有效的用戶對象開始,並使用項目關係將範圍限制爲與該用戶關聯的項目。
稍微偏離主題,您可能希望避免將user_id直接存儲在會話中,因爲它可能很容易被欺騙,從而允許不必要的訪問(但這會成爲另一個問題的對話)。
感謝賈斯汀,這是我想要的,但使用你寫的代碼給出這個錯誤'未定義的局部變量或方法'current_user'爲#' –
你可以發佈你的ItemsController邏輯?解決方案取決於您的應用程序如何處理驗證。大多數身份驗證方法爲控制器提供當前登錄用戶的變量。在我給出的例子中,這個變量是「current_user」,但是看起來你的應用程序使用了不同的約定。 – Justin
我試圖理解你,但我在我的應用程序中的用戶的功能我覺得是會話[:user_id] = user.id –