我正在尝试运行迁移(只是添加一个列并实际初始化它),但声明性授权(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 /文件夹是空的!!!!)
答案 0 :(得分:0)
文档说要添加以下内容,但由于Rails 3供应商文件夹在rails 3和4中不再存在,这是错误的:
require "vendor/plugins/declarative_authorization/lib/maintenance"
我在google group询问了他们给了我正确的一句话:
require 'declarative_authorization/maintenance'
对我有用!