我想确保电话号码的纯索引并保留原始电话号码字符串。
用户基本上可以输入1(234)567-8901 ext 234
之类的数字,并将其保存为字符串。我希望有一个索引列,可以自动生成此12345678901234
的精简版本。这样我就可以通过不同的界面轻松查找数字,或者不用担心原始输入。
我应该在哪里编写代码以确保在电话表的数字列中创建数字版本?是否有 on-create-or-update-generate-converted-index 方法来执行此操作?它将从多个控制器访问,并且是多态的。
谢谢!
答案 0 :(得分:2)
我会创建第二个字段canonic_phonenumber
并使用带有before_save
选项的if
在字符串更改时填充此字段
class YourModel
before_save :canonicalize_phonenumber, if: :phonenumber_changed?
def canonicalize_phonenumber
self.canonic_phonenumber = <function to canonicalize the string>(phonenumber)
end
在第二个字段中,您可以设置索引。