Ruby on Rails应用程序的只读模式

Nic*_*o77 5 ruby ruby-on-rails

我有一个交互式Ruby on Rails应用程序,我希望在某些时候将其置于"只读模式".这将允许用户读取他们需要的数据,但阻止他们写入数据库的操作.

实现此目的的一种方法是在进行任何写入之前检查数据库中的真/假变量.

我的问题.这个问题有更优雅的解决方案吗?

Zar*_*ony 13

如果你真的想要阻止任何数据库写入,我可以想象的最简单的方法是覆盖readonly?模型的方法,以便始终返回true,无论是在选定的模型中,还是在所有ActiveRecord模型中.如果模型设置为readonly(通常通过调用#readonly!它完成),任何尝试保存记录都会引发ActiveRecord::ReadOnlyRecord错误.

module ActiveRecord
  class Base
    def readonly?
      true
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

(实际上是未经测试的代码,但你明白了......)


mar*_*ark 2

权限插件?像 cancan 这样简单的东西,你可以定义用户何时可以做什么。它将允许您显示或不显示链接,并限制对控制器操作的访问。Railscast 会比我解释得更好。

http://github.com/ryanb/cancan

http://railscasts.com/episodes/192-authorization-with-cancan