2011-12-06 24 views

回答

2

我在理解您的問題時遇到了一些麻煩,所以如果我錯誤地解釋了您的問題,我很抱歉。

您正在尋找一種方法將搜索限制爲僅屬於當前登錄用戶的項目?

這首先需要像這樣的項目和用戶,東西之間的關聯:

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直接存儲在會話中,因爲它可能很容易被欺騙,從而允許不必要的訪問(但這會成爲另一個問題的對話)。

+0

感謝賈斯汀,這是我想要的,但使用你寫的代碼給出這個錯誤'未定義的局部變量或方法'current_user'爲#' –

+0

你可以發佈你的ItemsController邏輯?解決方案取決於您的應用程序如何處理驗證。大多數身份驗證方法爲控制器提供當前登錄用戶的變量。在我給出的例子中,這個變量是「current_user」,但是看起來你的應用程序使用了不同的約定。 – Justin

+0

我試圖理解你,但我在我的應用程序中的用戶的功能我覺得是會話[:user_id] = user.id –

相關問題