没有人可以帮助解决这个问题吗?
在我的 rails 3.2 应用程序中使用 cancan 查找记录时遇到问题。
在我的“nas”索引中,我试图显示属于 current_user 位置的“nas”列表。
问题似乎是用户和 nas 之间没有正式的关系——位置拥有 nas,用户拥有位置。
在我的 nas 控制器中使用 access_by 方法给了我不寻常的结果。如果我在ability.rb 中使用以下内容,我会收到错误消息:
can :read, Nas, :locationusers => { :user_id => user.id }
Error: undefined method `class_name' for nil:NilClass
而且,如果我改为:
can :read, Nas, :locations => { :user_id => user.id }
我只列出了用户第一个位置的 nas。
例如,如果我的用户有 ids = 1,2,3 的位置,则仅显示位置 1 的 nas。
有没有办法使用cancan显示当前用户位置的所有nas,还是我必须以不同的方式进行?
我的人际关系如下:
class User < ActiveRecord::Base
...
has_many :locationusers
has_many :locations, :through => :locationusers
...
end
class Location < ActiveRecord::Base
...
has_many :locationusers
has_many :users, :through => :locationusers
has_many :nas
...
end
class Node < ActiveRecord::Base
...
belongs_to :location
end
在我的能力.rb:
...
if user.role? :customer_admins
can :read, Nas, :locations => { :user_id => user.id }
..
纳斯控制器
@nas = Nas.accessible_by(current_ability).all