没有params [:id]设置的cancancan授权

时间:2015-03-02 14:46:45

标签: ruby-on-rails ruby-on-rails-4 authorization cancan cancancan

我试图授权"地点"。在url中,param不是Location id,而是另一个名为" url_alias"的字段。因此,当在LocationsController中搜索正确的位置时,我不会使用params [:id]。

@location = Location.find_by(url_alias: params[:url_alias])

路线看起来像这样:

resources :locations, param: :url_alias

在ability.rb模型中,我使用以下行;

can :read, Location, url_alias: "TestURL"

现在问题是CanCanCan没有使用我尝试通过url_alias字段授权的信息,我可以查看我想要的每个位置。当我更换" url_alias"通过随机值,例如" qwert",我甚至不会得到该字段不存在的错误。

通过将控制器中的params [:id]设置为随机值,一切都按预期工作,可以通过url_alias等进行授权。 我认为通过将params [:id]设置为随机值来解决这个问题并不是一个非常干净的解决方案,以便让CanCanCan正常工作。那么有没有人想要更好的解决方案呢?提前谢谢!

0 个答案:

没有答案