2011-12-23 19 views
3

ためdeclarative_authorizationを設定するにはアップロードした画像 - 自分の画像のみ。は、どのように私はこれらの二つのモデルを持っているすべてのユーザー

user_id | photo 
     1 | 1 
     1 | 2 
     1 | 3 
     2 | 4 

、ユーザーがURL /photos/1を設定すると、ので、この画像は数1user_id=2はこのアドレスが表示されますとき、彼は見ていないとuser_idのためにのみ表示されます:私は、例えば、平均値イメージ...

これは何か可能ですか?

+1

を読んで興味がある可能性があり???そうであれば、 "filter_resource_access"ディレクティブを持つ適切な名前のコントローラがあると仮定すると、頭の中の爪にはかなりの打撃があります。 – dmcnally

+0

私はすでに睡眠が必要です。私をキックしてくれてありがとう! – user984621

+0

cancanを使用して、あなたのためにもっと簡単にすることができます – Uchenna

答えて

0

あなたはauthorization_rules.rbにあなたのコントローラと

role :reg_ser do 
    has_permission_on :photos, :to => [:index, :new, :create] 
    has_permission_on :photos, :to => [:show, :edit: update] do 
    if_attribute :user_id => is { user.id } 
    end 
end 

のようなもので

filter_access_to [:index, :new, :create] 
filter_access_to [:show, :edit, :update], :attribute_check => true 

のようなものを配置する必要があります。したがって、すべてが正しく機能するので、属性をチェックするすべてのアクションに対してコントローラーに:attribute_checkを含めることが重要です。 それだけで(これはInheritedResourcesがコレクションとしてcurrent_user.picturesを持たせることになる)

def begin_of_association_chain 
    current_user 
end 

またはコントローラに類似を追加することにより、現在のユーザーの事を示すことは非常に簡単であるように私は、それなし:indexを残しました。

また、あなたは、あなたが「declarative_authorization」を使用している意味するかhttp://asciicasts.com/episodes/188-declarative-authorization

関連する問題