以下の感じで設定をしてみました。
-
update
できればedit
を、create
できればnew
を実行できる - ログインユーザ自身のレコードだけ
show
,update
,destroy
できる - ログインしていれば
create
できる - ログインユーザのレコードだけ
index
で一覧できる
app/policies/blog/site_policy.rb
class Blog::SitePolicy < ApplicationPolicy
def index?
!!user
end
def show?
record.user == user
end
def create?
!!user
end
def new?
create?
end
def update?
record.user == user
end
def edit?
update?
end
def destroy?
record.user == user
end
class Scope < Scope
def resolve
scope.where(user_id: user.id)
end
end
end
よく詳しくはブログ記事に載せたコントローラ側のコードもご覧ください。