これは(管理者として)非常にまれに実行されるクエリであり、sphinx でインデックスを作成したり RAM を使い果たしたりする価値はありません。
したがって、変数を次のように設定すると: fn, ln, em = 'John', 'Smith', 'johnsmith@gmail.com'
クエリは次のようなものです。
profiles = Profile.joins(:user).where(:users=>{"email" => em}).
where("first_name LIKE '%#{fn}%' AND last_name LIKE '%#{ln}%'")
ただし、電子メールで部分文字列を受け入れるようにしたい場合を除きます (たとえば、em == 'th@gm' の場合、'johnsmith@gmail.com' と一致する必要があります)。正規表現に一致する変数を持つユーザーのみを選択する結合を行うには、これをどのように記述しますか?