要么我缺少某些东西,要么不了解其他帖子/说明。我正在尝试使用标准模型以及无模型控制器来执行基于数据库的功能。在DB我:CanCan数据库能力无法使用无模式控制器
| action_name | object_type |
|:index |Tag |
|:index |AssetDashboardController |
标签会工作得很好...... AssetDashboardController被作为一个类,而不是一个符号传递,因此失败can
。
Rails的控制台尝试用绳子& constantize:在DB
1.9.3p194 :017 > "AssetDashboardController".constantize
=> AssetDashboardController
1.9.3p194 :018 > "Tag".constantize
=> Tag(id: integer, tag_unique: string, room_monitor_id: integer, star_id: integer, map_id: integer, tracked_type_id: integer, tracked_object_id: integer, x: integer, y: integer, created_at: datetime, updated_at: datetime)
1.9.3p194 :019 >
“AssetDashboard” 到位 “AssetDashboardController” 的获取NameError: uninitialized constant AssetDashboard
和 “asset_dashboard” 到位 “AssetDashboardController” 的获得NameError: wrong constant name asset_dashboard
能力.rb:
def initialize(user)
user ||= User.new #in case user is not passed there is a blank user to validate against
if user.is_implementer?
can :manage, :all
elsif user.user_permissions.exists?
user.user_permissions.each do |user_permission|
can user_permission.permission.action_name.to_sym, user_permission.permission.object_type.constantize
end
elsif !user.role.nil?
user.role.default_role_permission.each do |role_permission|
can role_permission.permission.action_name.to_sym, role_permission.permission.object_type.constantize
end
else
can :read, [Asset, Patient, StaffMember, AssetDashboardController, PatientDashboardController, DashboardController]
end
end
end
AssetDashboardController.rb
class AssetDashboardController < ApplicationController
authorize_resource :class => false
def index
end
end
如果我把这个Ability.rb: can [:show, :index], :asset_dashboard
它工作正常。
请让我知道是否有更多我可以添加。
的Rails 3.0.13,惨惨1.67,红宝石1.9.3p194上RVM
我宁愿不更换DB用'can [:show,:index],:asset_dashboard'等硬编码片断查找。我试图弄清楚为什么AssetDashboardController的数据库条目失败。 – ScottJShea
@ScottJShea我想,如何cancan的工作'非宁静控制器'这里的链接https://github.com/ryanb/cancan/wiki/Non-RESTful-Controllers – Viren
另见'authorize_resource'这里https:// github。 COM/ryanb /康康舞/维基/中授权 - 控制器 - 操作 –