Ruby on rails Rails:动态索引创建:为ActiveRecord动态生成的自定义电话索引

Ruby on rails Rails:动态索引创建:为ActiveRecord动态生成的自定义电话索引,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我希望确保电话号码的纯索引,并保持原始电话号码字符串 基本上,用户可以输入一个数字,如1(234)567-8901 ext 234,并将其保存为字符串。我想有一个索引列,自动生成此12345678901344的精简版本。这样我就可以很容易地通过不同的接口或其他方式查找数字,而不用担心原始输入 我应该在哪里编写代码,以确保在创建时将数字版本写入电话表的数字列?是否有创建或更新生成转换索引的方法?它将从多个控制器访问,并且是多态的 谢谢 我将创建第二个字段canonic\u phonenumber,

我希望确保电话号码的纯索引,并保持原始电话号码字符串

基本上,用户可以输入一个数字,如
1(234)567-8901 ext 234
,并将其保存为字符串。我想有一个索引列,自动生成此
12345678901344
的精简版本。这样我就可以很容易地通过不同的接口或其他方式查找数字,而不用担心原始输入

我应该在哪里编写代码,以确保在创建时将数字版本写入电话表的数字列?是否有创建或更新生成转换索引的方法?它将从多个控制器访问,并且是多态的


谢谢

我将创建第二个字段
canonic\u phonenumber
,并在保存前使用
if
选项在字符串更改时填充此字段

class YourModel

  before_save :canonicalize_phonenumber, if: :phonenumber_changed?

  def canonicalize_phonenumber
    self.canonic_phonenumber = <function to canonicalize the string>(phonenumber)
  end
class-YourModel
保存前:规范化\u phonenumber,如果::phonenumber\u已更改?
def规范化\u电话号码
self.canonic_phonenumber=(phonenumber)
结束

在第二个字段中,您可以设置索引。

它可以工作!我发现我需要在电话号码前面的等号后面加上self<代码>自我。电话号码
。对于任何想知道我是如何处理字符串的人,我使用gem MightyString及其方法
strip\u byac(“0123456789”)
,这意味着通过可接受的字符进行strip。