对于我的应用程序,我有用户进行项目发布。每个帖子只能通过原始海报进行编辑。我想构建一个功能,允许原始用户给原始海报的其他用户选择访问/编辑权限。我该怎么做呢?
project.rb
class Project < ActiveRecord::Base
...
belongs_to :user
...
end
user.rb
class User < ActiveRecord::Base
...
has_many :projects
...
end
projects_controller.rb
class ProjectsController < ApplicationController
before_filter :authenticate_user!, except: [:edit]
def edit
if current_user == Project.find(params[:id]).user || current_user.try(:admin?)
@project = Project.find(params[:id])
else
redirect_to root_url
end
end
end
答案 0 :(得分:0)
也许用户有类似的类别?
“管理员”,“一般用户”,“所有者”
代码示例将是
def check_owner
ret = false
if post.user_id = current_user.id
ret true
end
end
答案 1 :(得分:0)
听起来像授权给我。如果它与某种授权访问权限进行编辑,那么我最好的选择是你用CanCan做到这一点。因此,您可以拥有一个管理员用户,该用户可以根据用户的角色授予用户特定的访问权限。 https://github.com/ryanb/cancan不确定这是否正是您所寻找的。因为我的意思是作为一个例子,你可以有效地在user_controller
def correct_user
@user = User.find(params[:id])
if current_user.role? :administrator
#Allow admin to access everyone account
else
access_denied unless current_user?(@user)
end
end
使用CanCan,您可以通过以下操作在abilities.rb
中定义访问权限:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user
# raise user.role?(:administrator).inspect
if user.role? :administrator
can :manage, :all
can :manage, User
elsif user.role? :employee
can :read, :all
end
end
end
不是100%确定这是你的追求。希望这会有所帮助