嗨,我需要新的(对我而言)gem 'cancan' 的帮助
我有下一个问题:在我的应用程序中,我有“发布”模型和“照片”模型(路线:)
resources :posts do
resources :photos
end
在ability.rb中我写道:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
if user.roles.first.nil?
can :read, Post
#not logged
elsif user.roles.first.name == "user"
#loged in as user
can :read, Post
can :create, Post
can :update, Post, :user_id => user.id
can :destroy, Post , :user_id => user.id
elsif user.roles.first.name == "admin"
# login as admin
can :manage, Post
end
end
end
而且我不知道那是什么逻辑:如果帖子由另一个用户创建,则当前用户无权访问页面
localhost:3000/post/97/photos
而且他(当前用户)不能在那里创建任何东西或破坏,换句话说,他只能阅读localhost:3000/post/97/
但是,如果当前用户是 auto - 他可以访问localhost:3000/post/97/photos
,localhost:3000/post/97/photos/new
并且localhost:3000/post/97/photo/244/show
...
有类似的能力:can :destroy, Photo , @photo.post.user_id => user.id // 但是如何定义@photo ?? 或者如果你知道更简单的方法?