使用声明性授权gem时迁移的安全性问题

时间:2013-06-07 11:43:21

标签: ruby-on-rails-3.2 database-migration declarative-authorization

我正在尝试运行迁移(只是添加一个列并实际初始化它),但声明性授权(gem)拒绝我访问,因为她正在使用“访客”用户。

这是我收到的错误消息:

No matching rules found for update for #<Authorization::AnonymousUser:0xaf100b8 @role_symbols=[:guest]>

当然,“guest”用户根本没有在config / authorization.rb中定义的访问权限 此外,我使用声明式授权的“using_access_control”选项强制执行模型安全性

我如何以“admin”声明授权的用户身份运行我的迁移?

我过去已经面临这样的问题,并在stackoferflow答案中找到了解决方案,但我无法再找回它。

感谢任何帮助

===更新===

我找到了一个可能的解决方案,将我的迁移块放入declarative authorization gem中的“without_access_control”方法块中:

class AddDateToProjMesure < ActiveRecord::Migration

  def change
    add_column :proj_mesures, :date_reference, :date

    Authorization::Maintenance::without_access_control do
      ProjMesure.all.each do |proj_mesure|
        proj_mesure.update_attributes! :date_reference => Time.zone.today
      end # ProjMesure.all.each
    end # Authorization::Maintenance::without_access_control

  end
end

但我收到以下错误:

未初始化的常量授权::维护/ var / www-opf / opf / db / migrate / 20130607103809_add_date_to_proj_mesure.rb:41:在“更改”

任何想法为什么?如果我需要使用 require 语句,它应该指向什么? (vendor / plugins /文件夹是空的!!!!)

1 个答案:

答案 0 :(得分:0)

文档说要添加以下内容,但由于Rails 3供应商文件夹在rails 3和4中不再存在,这是错误的:

require "vendor/plugins/declarative_authorization/lib/maintenance"

我在google group询问了他们给了我正确的一句话:

require 'declarative_authorization/maintenance'

对我有用!