【问题标题】:Rails strange behavior of production app running on heroku在heroku上运行的生产应用程序的Rails奇怪行为
【发布时间】:2012-07-31 18:20:15
【问题描述】:

在用户模型中,我有类型点的属性位置。现在我有一个验证码:

validates :location, :format => { :with => /\(-?\d+(?:\.\d+)?,-?\d(?:\.\d+)?\)/,
                                    :on => :update,
                                    :if => :location_changed? }

它在控制台、本地主机上运行良好,但在 heroku 上它返回:

UsersController 处理#update as / 2012-07-31T18:14:37+00:00 app[web.1]:参数: {"user"=>{"location"=>"(3.545452,2.4353534)"}, "id"=>"self"} 2012-07-31T18:14:37+00:00 app[web.1]: 完成 500 内部服务器 13 毫秒 2012-07-31T18:14:37+00:00 应用程序 [web.1] 中的错误: 2012-07-31T18:14:37+00:00 app[web.1]: NoMethodError(未定义的方法 location_changed?' for #<User:0x00000004dc29c8>): 2012-07-31T18:14:37+00:00 app[web.1]:
app/controllers/users_controller.rb:16:in
update'

实际上它在 heroku 控制台中也很好用,但在 curl 请求中不起作用。

Rails 版本 3.2.7。

attr_accessible :profile_picture, :password, :location

谢谢!

【问题讨论】:

  • 这可能有助于显示模型的代码...
  • 模型中有大量代码。你需要哪一部分?
  • 缺少方法的部分?
  • 它是一个标准的 Rails 助手,又名 attr_changed?。所以我没有任何与这部分验证有关的代码。主要问题是它在本地机器上运行良好。
  • 看来你在开玩笑! ActiveModel::Dirty - 包含在默认的 rails 构建中,我可以在任何模型中使用这些方法。例如 MyModel.changed? ; MyModel.some_attr_changed?等等。我不需要自己实现它们。它们已经存在并且开箱即用=)如果你不理解它。感谢您的帮助。

标签: ruby-on-rails api heroku


【解决方案1】:

它看起来像一个魔法。如果表和服务器重新启动,我会通过娱乐修复它。很奇怪。

【讨论】:

    猜你喜欢
    • 2013-11-15
    • 2016-05-28
    • 2014-04-30
    • 2013-05-31
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    相关资源
    最近更新 更多