3

私はライアンベイツの宣言型承認レールキャストをフォローしています。特定の記事の著者が所有者であるかどうかに関係なく、彼の記事に残されたコメントを編集できるようにする機能を追加しようとしています。やってみましたが、うまくいきませんでした。

  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を変更して、ユーザーが自分の記事にのみコメントが残っている場合にコメントを編集できるようにするにはどうすればよいですか?

ありがとう

4

2 に答える 2

3

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

role :author do
  [...]

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

の変更is_inによるものであることに注意してください

オプションで、user.article_idsによって変更することができますuser.articles.collect{|a| a.id}.uniq

于 2010-02-08T18:44:40.777 に答える
0

あなたの最初の宣言...

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

...: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の初心者であり、宣言型承認のいくつかの基本的な機能を使用しただけなので、あなたの問題に対する正確な答えはわかりません。しかし、私はあなたがその記事にアクセスする方法を見つけなければならないと思いますuser、のようなものif_attribute :article_id => is { user.articles.id }

たぶんあなたはここのドキュメントで答えを見つけることができます

于 2010-02-07T00:05:40.747 に答える