我在模型的phone
字段上将电话号码保存为国内电话号码User
。
我做了一个快速的方法将号码转换为国际号码。
我的问题是如何使这种方法像这样可用
@user.phone.to_international
而不是我现在的
to_international(@user.phone.to_international,@user.phone.country)
知道如何做到这一点吗?
我在模型的phone
字段上将电话号码保存为国内电话号码User
。
我做了一个快速的方法将号码转换为国际号码。
我的问题是如何使这种方法像这样可用
@user.phone.to_international
而不是我现在的
to_international(@user.phone.to_international,@user.phone.country)
知道如何做到这一点吗?
这有效,但不确定 after_initialize 是否更好
将此添加到您的用户模型
after_find :prepare_phone
private
def prepare_phone
def phone.to_international
self.upcase # change with whatever you want. 'self' is the phone attr
end
end
使用 to_international 方法创建一个名为 phone 的类,并将用户类中的 phone 属性设置为 phone 类的实例。
猴子补丁String
类。补充myapp/config/initializers/string_monkey_patches.rb
:
String.class_eval do
PHONE_NUMBER_FORMAT = // # some regex matching a phone number
def to_international
raise 'Invalid phone number format' unless self.match(PHONE_NUMBER_FORMAT)
# convert self (the phone number string) to an international number
end
end