通过模型关系授权CanCan采取行动

时间:2011-04-11 08:11:28

标签: ruby-on-rails-3 cancan

我在应用程序中使用CanCan和Devise进行身份验证过程,一切都运行良好。

但是,我们有一个设置,用户可以在其中创建项目列表。

List模型有一个user_id,auth可以正常工作,但是项目的所有权是通过List处理的:has_many Item关系,而Item实际上没有user_id列。

CanCan如何处理这个问题?

我试过

can :manage, Item do |item|
  item.list.user_id = user.id
end

但在网址上输入Item ID可让每个用户都能访问每个项目,无论列表所有权如何。

我在Cancan的github的wiki中找不到任何似乎覆盖这个内容的东西,所以希望有人可以帮助

期待发表评论 感谢

1 个答案:

答案 0 :(得分:5)

您是否将===混淆了?

can :manage, Item do |item|
  item.list.user_id == user.id
end