我用以下代碼抓取特定用戶的開放存儲桶列表。過濾未知數據的導軌模型
@open_buckets = Buckets.order("buckets.id ASC").where(:user_id => @user.id)
還有一個用戶的私人桶的概念。我只想要在登錄用戶是存儲桶的所有者時返回專用存儲桶。私人領域是一個布爾值。我能以某種方式更改我的查詢,以便所有用戶都可以獲得公共存儲區,只有所有者可以獲得他們的私人存儲區和公共存儲區?
我唯一想到的就是檢查登錄用戶是否與請求桶的用戶相同,並執行不同的查詢。像下面的東西。
if :session["user_id"] => :user_id
@open_buckets = Buckets.order("buckets.id ASC").where(:user_id => @user_id)
else
@open_buckets = Buckets.order("buckets.id ASC").where(:user_id => @user_id).where(:private => true)
感謝
關於不使用2個視圖。只有1個視圖,但來自控制器的數據可能有更多行,具體取決於當前登錄的用戶。如果所有者用戶正在查看他自己的存儲區列表,則還會啓用更多按鈕。你認爲最好有兩個視圖各自採取不同的行動嗎? 1爲所有者,另一個爲其他人?是桶是一個錯字。它是單數。謝謝你的提醒。我也會檢查範圍內容。 – Brian
我喜歡brickers作用域 - 然後你可以在控制器上進行模型測試 - 總是更好:) –
@Brian請在我上面的代碼中查看'respond_with',我更新它以添加'@ buckets =',這樣它就會實際上工作。 – bricker