我正在使用apn_on_rails与rails进行iphone推送通知。
现在,令牌上的验证不再有效,因为验证要求每8个字符使用一个空格: validates_format_of : token,:with => /^a-z0-9{8}\sa-z0-9{8}\sa-z0-9{8}\sa-z0-9{8}\sa-z0-9{8}\sa-z0-9{8}\sa-z0-9{8}\sa-z0-9{8}$/
http://github.com/markbates/apn_on_rails/blob/master/lib/apn_on_rails/app/models/apn/device.rb
但是我从Objective-C得到的设备令牌没有空间。
所以我想用=>覆盖验证: validates_format_of :token,:with => /^a-z0-9{64}$/
在不修改gem内部源代码的情况下,如何做到这一点?
谢谢。
发布于 2010-02-16 00:53:28
或者让代码生效:
[56, 48, 40, 32, 24, 16, 8].each { |i| code.insert(i, ' ') }
发布于 2010-07-29 13:28:31
您不是第一个遇到这个问题的人--我发现下面这篇名为Removing Rails validations with metaprogramming的文章很有帮助。
发布于 2010-09-01 02:17:05
元编程示例很棒,但是您很容易破坏依赖于此验证的代码。我推荐的是编写自己的访问器方法,修改属性以与gem一起使用。例如,使用wesgarrison的代码并修改setter:
def token= token
@token = [56, 48, 40, 32, 24, 16, 8].each { |i| token.insert(i, ' ') }
end
然后,您可以将此代码添加到包装模块或代码中使用的子类中。
https://stackoverflow.com/questions/2264555
复制相似问题