我試圖將cancan納入我的第一個Ruby on Rails應用程序。cancan並未評估實例級別的能力檢查
我有一個問題,開始......它肯定是一些基本的東西。
我的應用程序有一個項目列表,並且用戶可能有也可能沒有權限查看任何數量的項目。
我將此添加到我的ProjectsController:
class ProjectsController < ApplicationController
load_and_authorize_resource
我的初始化方法是這樣的:
def initialize(user)
user ||= User.new # guest user
puts "******** Evaluating cancan permissions for: " + user.inspect
can :read, Project do |project|
puts "******** Evaluating project permissions for: " + project.inspect
# project.try(project_users).any?{|project_user| project_user.user == user}
1 == 1 #POC test!
end
end
當我有這個,出現項目索引頁,但沒有項目被列出。
2個問題我這裏有:
- 應該不是所有的項目出現,因爲返回true所有 項目?
- 第二個puts語句不寫入導軌 服務器控制檯,但第一個是。這是爲什麼???
如果我改變初始化方法:
def initialize(user)
user ||= User.new # guest user
puts "******** Evaluating cancan permissions for: " + user.inspect
can :read, Project
end
...我看到所有的項目作爲我希望
如果我刪除即可:讀,項目行,我得到一個安全異常,試圖擊中項目索引頁....也是我所期望的。
我得到:未定義的方法'範圍'爲#<數組:0x43cbc30>。我會繼續研究爲什麼我會得到這個,但不希望我的紅寶石新手打斷你的慷慨行爲。 – Doug
錯誤,請嘗試'Project.scoped'。 'all' pre-Rails 4將返回一組記錄,而不是'ActiveRecord :: Relation'。 –
這是相當謙卑:未定義的方法'包括?'對於# –
Doug