状況: 私はユーザーモデルを持っています。 dbの属性 "meta_data"は "text"型のフィールドを表します。 モデルでは、それはカスタムクラスによってseriazized。 (serialize :meta_data, CustomJsonSerializer.new
)mysqlデータベースで検索 - シリアル化されていないデータ
つまり、ユーザーのインスタンスがある場合は、meta_data
と同じようにハッシュを使用できます。
User.first.meta_data['username']
問題:
私は与えられた文字列でユーザーを検索します検索機能を、記述する必要があります。私は手動の検索クエリをレールで実行することでそれを行うことができます。 User.where("email LIKE '%#{string}%'")...
しかし、meta_dataはどうですか? LIKE文でもこのフィールドを検索する必要がありますか?私がそうするならば、それは発見された記録の関連性を低下させるでしょう。
例:
私は2人のユーザーがいます。そのうちの一つは、他の一つは "セルジオ" のようになりますデシベルで
メタデータがあるユーザ名 "パトリック" を持っている:
1){ユーザー名:パトリック}
2){ユーザー名:セルジオ}
私はsergioを探していますが、検索文字列 "ser" =>を入力しますが、1つではなく2つの結果があります。このmeta_data文字列 "{uSERname:Patrick}"も "ser"を持つので、このレコードは無関係です。
解決方法はありますか?