0

我在模型的phone字段上将电话号码保存为国内电话号码User

我做了一个快速的方法将号码转换为国际号码。

我的问题是如何使这种方法像这样可用

@user.phone.to_international

而不是我现在的

to_international(@user.phone.to_international,@user.phone.country)

知道如何做到这一点吗?

4

3 回答 3

2

这有效,但不确定 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
于 2012-05-20T03:57:47.303 回答
2

使用 to_international 方法创建一个名为 phone 的类,并将用户类中的 phone 属性设置为 phone 类的实例。

于 2012-05-20T04:02:07.510 回答
-1

猴子补丁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
于 2012-05-20T04:52:08.120 回答