【问题标题】:Rails model: saving works locally but not on HerokuRails 模型:在本地保存作品,但不在 Heroku 上
【发布时间】:2012-09-06 11:22:05
【问题描述】:

我有一个用于食谱的 Rails 模型。 它有一个属性views,它计算它被查看了多少次。

在我的控制器的显示动作中,我正常获取模型对象:

@recipe = Recipe.find(params[:id])

然后我增加查看次数并保存:

@recipe.views = @recipe.views + 1
@recipe.save

这在本地运行顺利,但在 Heroku 上,保存显然不会发生。 不会抛出任何错误。

我可以在 Heroku 上的 rails 控制台中运行完全相同的代码,然后它就可以工作了。

我可以让它工作的唯一方法是设置

config.cache_classes = false

在环境/production.rb 中

这显然不是我想要的,但我不知道如何从这里开始。

我在 Cedar 堆栈上运行 Rails 3.2.8、Ruby 1.9.3,在开发和生产中都使用 Postgresql 9.1。

【问题讨论】:

  • 只是为了清理代码,你可以使用@recipe.increment!(:views) 作为你的计数器(还有!爆炸会抛出任何错误)。你用的是什么数据库?
  • 本地和 Heroku 上都是 postgresql 9.1。我有一种强烈的感觉,这是某种缓存问题(甚至没有在 Heroku 上命中该操作)。不过,我想知道为什么 cache_classes = false 使它起作用。如果我将其设置回 true,则保存将停止工作。
  • 没有抛出任何错误,但是您在日志中看到任何提示吗?
  • 为什么不使用印象派宝石,它更容易github.com/charlotte-ruby/impressionist 和一个例子stackoverflow.com/questions/4815713/…
  • +1 承认错误 :)

标签: ruby-on-rails heroku ruby-on-rails-3.2


【解决方案1】:

对于寻找自己解决方案的未来搜索者的 FWIW,当我遇到类似问题时,Benjamin Tan 对heroku restart 的回答(以 cmets 为单位)对我有用。

【讨论】:

  • 天哪!我不敢相信我没有尝试这个就浪费了这么多时间!
【解决方案2】:

从已编辑的问题正文中复制答案,以便从“未回答”过滤器中删除此问题:

更新:已修复

原来我在 app/controllers 目录中有一个包含另一个较旧控制器定义的文件。

~回答Azzar

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多