我在使用Heroku上的特殊配置提供的功能时遇到错误,即使它在我的机器上运行正常。
具体来说,我使用的是Rolify方法is_admin?在用户上,这可以通过初始化文件中的配置设置实现。
到目前为止,Heroku已经迁移了数据库,重新启动了应用程序并为每个页面刷新了多次页面。每次重置本地服务器时,如何让Heroku运行配置文件,就像本地机器一样?
错误:
ActionView::Template::Error (undefined method `is_admin?' for #<User:0x0000000524c8e0>):
2012-07-22T09:00:53+00:00 app[web.1]: 1: <% if current_user.is_admin? %>
代码:
# config/initializers/rolify.rb
Rolify.configure do |config|
config.use_dynamic_shortcuts
end
嗯,我尝试了另外一件事,但它确实有效,但这只是为了以防万一。
答案 0 :(得分:3)
我跑了$ heroku run rake db:reset
然后再次运作了。不知道为什么,但是哦。
修改强>
问题是,如果在数据库中尚不存在角色时调用Rolify自定义方法,则会导致错误。要解决这个问题,可以使用您需要的所有角色为数据库设置种子,或者更好,不要使用动态方法。
例如,而不是:
@user.is_admin?
使用@user.has_role?(:admin)
并且不会中断。