Rails 3 If Statement使用从控制器到另一个控制器的变量(ability.rb)

时间:2010-09-18 20:20:39

标签: ruby-on-rails ruby-on-rails-3

我正在使用Rails插件CanCan来处理权限检查。

我在ability.rb中有以下内容:

def initialize(user, projectid_viewing) 
 user ||= User.new
 if projectid_viewing == 8
  can :manage, :all
 else
  can :read, :all  
 end
end

projectid_viewing发送自:

class ProjectsController < ApplicationController
 before_filter :prepareCanCan, :only => [:show, :edit]
  def prepareCanCan
   @project = Project.find(params[:id])  
  projectid_viewing = @project.id
end

我有8个硬编码用于测试目的。由于某种原因,它没有在if语句中工作,我做错了吗?它始终允许can:manage

我有Project的控制器记录,所以我知道控制器设置为projectid_viewing的值是8。

想法?

1 个答案:

答案 0 :(得分:1)

我正在尝试理解......根据项目的不同,所有用户都可以编辑它,或者可以编辑所有模型?如果只是项目,我会尝试:

def initialize(user) 
  user ||= User.new
  can :manage, Project do |project|
    project.id == 8
  end
end