【发布时间】:2015-07-11 07:34:54
【问题描述】:
我有四个模型:
class Country < ActiveRecord::Base
has_many :postcards
end
class Postcard < ActiveRecord::Base
belongs_to :Country
has_many :photos
has_many :tips
end
class Photos < ActiveRecord::Base
belongs_to :postcard
end
class Tips < ActiveRecord::Base
belongs_to :postcard
end
路由嵌套如下:
Rails.application.routes.draw do
resources :countrys do
resources :postcards do
resources :photos, :tips
end
end
end
我遵循 CRUD 架构,一切正常,所有控制器都正常工作。我使用 private / country_params 创建和更新控制器方法。但是……
现在我意识到,如果我部署应用程序,任何人都可以单击视图中的链接来创建/编辑/销毁数据库。
限制访问的“良好做法”解决方案是什么?
- 仅为我构建用户模型并获得管理员权限?
- 在没有 crud 访问的情况下创建一组新视图?(这甚至可能吗?)
- 使用管理 gem(RailsAdmin 或 ActiveAdmin)?
【问题讨论】:
-
在危险动作(C、U、D)中,您应该检查该用户是否被授权执行该动作。显然,您想限制匿名用户。看看cancancan gem,我在很多项目中都成功使用过。
-
“一组没有 crud 访问的新视图”——你意识到 CRUD 中的 R 意味着“读取”吗? :)
-
感谢 cancancan 提示,如果我是唯一的一个用户(我没有计划应用程序的登录容量),它是否可以工作并且它可以隐藏视图中的实际链接? - 是的,好一个...所以 Crud -r ;)
-
如果您是唯一的用户,那就很简单了。只需在您必须登录才能使用创建、编辑和销毁操作的地方应用前置过滤器。
-
哈哈,现在就用谷歌搜索吧!非常感谢
标签: ruby-on-rails ruby ruby-on-rails-4 crud