我正在使用Devise进行用户身份验证和基本身份验证。假设我已经定义了用户和汽车之间的两个相互关联。
has_many :cars
belongs_to :user
用户A的车辆ID为1,用户B的车辆ID为2。
阻止用户A访问/cars/2
资源的最佳做法是什么?我可以为每个控制器添加一个before_filter:show,:edit,:update,:destroy,但这看起来很乏味且重复。有没有办法为此目的使用Devise或CanCan?
答案 0 :(得分:2)
您可以使用CanCan进行此操作,请在此处详细了解https://github.com/ryanb/cancan
将load_and_authorize_resource
添加到控制器顶部后
您可以将以下行添加到您的能力模型中,仅允许车主管理
可以:manage,Car,:user_id => user.id