康康舞中无动作能力的定义?
我希望允许管理员使用自定义字段创建帖子,但仍然希望他们使用与普通用户相同的创建操作。
我想这样做:
class Ability
include CanCan::Ability
def initialize(user)
if user.admin?
can :specialize, Post
end
end
end
然后在我的控制器中:
def create
@post = Post.new
if can? :specialize, @post
do_fancy_things_here
end
end
奇怪的是,无论用户是否是管理员,do_fancy_things_here总是在运行。
这很奇怪。我偏离 cancan 手册的唯一方法是 :specialize 实际上并不映射到控制器操作。这有关系吗?
I wish to allow admins to create posts with custom fields, but still wish for them to use the same create action as normal users use.
I thought to do this:
class Ability
include CanCan::Ability
def initialize(user)
if user.admin?
can :specialize, Post
end
end
end
Then in my controller:
def create
@post = Post.new
if can? :specialize, @post
do_fancy_things_here
end
end
The weird thing is, do_fancy_things_here is ALWAYS running regardless of if the user is an admin or not.
This is strange. The only way I deviated from the cancan manuals is that :specialize does not actually map to a controller action. Does that matter?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您必须使用
授权! :specialize, @post
在你的控制器中。https://github.com/ryanb/cancan/wiki/Authorizing-Controller-Actions
Your have to use
authorize! :specialize, @post
in your controller.https://github.com/ryanb/cancan/wiki/Authorizing-Controller-Actions