私はRails 4アプリケーションで専門家の許可を書く方法を理解しようとしています。Rails - スコットを持つ専門家
私は記事ポリシーを持つ記事モデルを持っています。記事の方針はあります
class ArticlePolicy < ApplicationPolicy
attr_reader :user, :scope
def initialize(user, record, scope)
@scope = scope
super(user, record)
end
class Scope < Scope
def resolve
if user == article.user
scope.where(user_id: user_id)
elsif approval_required?
scope.where(article.state_machine.in_state?(:review)).(user.has_role?(:org_approver))
else
article.state_machine.in_state?(:publish)
end
end
end
# TO DO - check if this is correct - I'm not sure.
# I now think I don't need the index actions because I have changed the action in the articles controller to look for policy scope.
# def index?
# article.state_machine.in_state?(:publish)
# end
def article
record
end
記事・コントローラがあります。
def index
@articles = policy_scope(Article)
# query = params[:query].presence || "*"
# @articles = Article.search(query)
end
私はスコープに関連する評論家文書に従い、政策文書に示されているindexアクションがない理由を把握しようとしています私のために働く。
<% policy_scope(@user.articles).sort_by(&:created_at).in_groups_of(2) do |group| %>
を、私はこのエラーを取得::私は(ドキュメントのように)次のことを試してみました、私は間違って行ってきたところ
undefined local variable or method `article' for #<ArticlePolicy::Scope:0x007fff08ae9f48>
誰でも見ることができますか?
@ user.articlesが正しいかどうかはわかりません。私の構成では、記事はユーザーに属しますが、私の索引のアクションでは、すべてのユーザーに、自分のスコープで表示できる記事を表示したいと考えています。
@Bllal - ご意見ありがとうございます。私はこれを試みたが、私はまだ上記と同じエラーメッセージが表示されます。 – Mel
レコード変数にそれぞれの記事が含まれているかどうか確認できますか?私はそれが記事のレコードを含むべきだと思う。 –
こんにちは@Bllal - 申し訳ありませんが、私はそれが何を意味するのか分かりません。 – Mel