【发布时间】: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]:update'
app/controllers/users_controller.rb:16:in
实际上它在 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