我已经用Devise和CanCan创建了一个Rails应用程序。我拥有与文章具有一对多关系的用户。我是新来的康康舞,这里就是我打算做的事:CanCan - 如何允许用户更新和删除他们自己的对象
联系
- 可以做到在用户登录文章
任何行动
- 可以阅读和创建文章
- 可编辑和删除自己的帖子
Guest用户
- 可以阅读文章
但我无法理解惨惨的语法。我明白它会是这样的。
def initialize(user)
user ||= User.new
if user.admin?
can :manage, Article
else
can :read, Article
end
end
但这只是为管理和guest用户,我不知道如何从登录的用户区分访客用户,因为它创建了一个新的用户对象时用户是空的。我已经看到代码应该是这样can [:edit, :destroy], Article, :user_id => user.id
,但我不确定这将如何适合初始化方法。
还有最后一个问题,如果我只在宾客中定义了can :read, Article
,它是否会阻止其他操作,如创建和更新,如列出读取操作的白名单?
任何帮助,将不胜感激。非常感谢!
该视图看起来不太好,但它与问题主题无关,这似乎在你的ability.rb中得到了很好的覆盖。 – 2012-08-01 07:38:42
我使用自制的助手,比如link_to_edit,link_to_destroy等等。我的助手包括can?()的调用,所以不需要将逻辑放入视图中。 – 2012-08-02 04:00:14