状況: ユーザー モデルがあります。db の属性「meta_data」は、「テキスト」タイプのフィールドを表します。モデルでは、カスタム クラスによってシリアライズされます。( serialize :meta_data, CustomJsonSerializer.new
)
つまり、user のインスタンスがあれば、meta_data
Hash と同じように操作できます。
User.first.meta_data['username']
問題:
指定された文字列でユーザーを検索する検索関数を作成する必要があります。Rails exで検索クエリを手動で構築することで実行できます。User.where("email LIKE '%#{string}%'")...
しかし、 meta_data はどうですか? このフィールドも LIKE ステートメントで検索する必要がありますか? もしそうすると、見つかったレコードの関連性が低下します。
例えば:
2 人のユーザーがいます。そのうちの 1 つはユーザー名が「patrick」で、もう 1 つは「sergio」です。
db のメタデータは次のようになります。
1) {ユーザー名: パトリック}
2) {ユーザー名: セルジオ}
sergio を見つけたいのですが、検索文字列「ser」を入力します => しかし、1 つではなく 2 つの結果が得られます。このメタデータ文字列「{uSERname: Patrick}」にも「ser」が含まれているため、このレコードは無関係になります。
それを解決する方法はありますか?