3


1

宣言的な承認-記事に残っている他のコメントの編集を許可しますか?

Ryan Batesのhttp://railscasts.com/episodes/188-declarative-authorization [宣言的承認] railscastをフォローしています。 私は、特定の記事の著者に機能を追加して、彼が所有者であるかどうかに関係なく、彼の記事に残されたコメントを編集できるようにしています。 私はそれをやってみましたが、動作させることができませんでした。

  role :author do
    has_permission_on :articles, :to => [:new, :create]
    has_permission_on :articles, :to => [:edit, :update, :show] do
      if_attribute :user => is { user }
    end
    **has_permission_on :comments, :to => [:edit, :update] do
      if_attribute :article_id => is { user }
    end**
  end

コメント行のhas_permissionを変更して、ユーザーが自分の記事だけに残っているコメントを編集できるようにするにはどうすればよいですか?

ありがとう

2 Answer


3


ユーザーが自分の記事で公開されているコメントを編集できるようにするには、ルールは次のようになります。

role :author do
  [...]

  has_permission_on :comments, :to => [:edit, :update] do
    if_attribute :article_id => is_in { user.article_ids }
  end
end
  • is is_in *による変更に注意してください

オプションで、「user.articles.collect {| a |」によって「user.article_ids」を変更できます。 a.id} .uniq`


0


最初の宣言…​

has_permission_on :articles, :to => [:edit, :update, :show] do
  if_attribute :user => is { user }
end
  1. なぜなら、もし :user`が user`(これは 現在ログインしているユーザー-current_user)には、 `:articles`で宣言されたアクションを実行する権限があります。

しかし、2番目のものを見ると…​

has_permission_on :comments, :to => [:edit, :update] do
  if_attribute :article_id => is { user }
end

属性 :article_id`は、現在ログインしている user`と決して同じではないことがわかります。

今、私はRails初心者であり、*宣言型承認*の基本的な機能を使用しただけなので、あなたの問題に対する正確な答えはわかりません。 しかし、その「ユーザー」の記事にアクセスする方法を見つける必要があると思います。「if_attribute:article_id ⇒ is {user.articles.id}」のようなものです。

たぶんあなたは答えをドキュメントで見つけることができますhttp://www.tzi.org/~sbartsch/declarative_authorization/0.1/ [こちら]