2011-03-28 47 views
1

這似乎是一個簡單的任務,但我很難找出「軌道」的方式來做到這一點。我應該如何驗證對Active Record對象的訪問?

我使用Authlogic來驗證用戶,並且每個用戶has_many:博客,:圖片等。我不知道該怎麼做是限制用戶A的博客的訪問(顯示/更新/編輯/刪除)只是給用戶A.

看來我有三個選擇。

  1. 條件(USER_ID == current_user.id)添加到我所有的查找語句
  2. 使用的before_filter來完成上述
  3. 使用default_scope追加該認證條件(但我認爲這將當我去寫測試時會很痛苦)。

其他人發現是最好的方法來解決這個問題?

作爲一個額外的問題,假設這是一個用戶has_many:博客,博客has_many:部分和部分has_many:圖像的情況。在這種情況下,屬於博客的所有元素都必須限制爲用戶A,但只有博客具有user_id列。將相同的認證條件附加到章節和圖像上的最有效/優雅的方式是什麼?

謝謝, 邁克

回答

1

另一種選擇可能是使用cancan寶石。 https://github.com/ryanb/cancan

這真的很簡單,你也可以解決你的獎金問題。

例如:

can :manage, Blog, :user_id=>user.id 
can :manage, Section, :blog=>{:user_id=>user.id} 
can :manage, Image, :section=>{:blog=>{:user_id=>user.id}} 

這種設置是好的,如果你有

Blog belongs_to User 
Section belongs_to Blog 
Image belongs_to Section 

關於如何設置了休息請參閱Wiki

哦,我忘了還有一個關於cancan的屏幕錄像

+0

真棒建議。康康看起來很完美。非常感謝! – CambridgeMike 2011-03-28 22:46:31

0

使用的before_filter與功能,檢查用戶是否已經驗證過了。

相關問題