0

「%mike%」のような単純なテキスト文字列 search_for を指定すると、「user.email LIKE search_for」または「user_profile.name LIKE search_for」のいずれかであるすべてのユーザーを検索したいと思います。

ユーザー has_one UserProfile

ユーザーには :email フィールドがあります

UserProfile には :name フィールドがあります

user.user_profile が存在しない可能性があります (たとえば、ユーザーがまだ名前を持っていない可能性があります)。

最初に LEFT JOIN が必要であると仮定します (つまり、存在する場合は user_profile に参加しているすべてのユーザーがいます)。次に、.where 句の一部として user.email と user_profile.name を指定できる必要がありますが、できません。構文をかなりクラックして機能させます。

どんな助けでも大歓迎です。

4

1 に答える 1

0

それを見つけた @found_all = User.joins("LEFT OUTER JOIN user_profiles ON user_profiles.user_id = users.id").where("(LOWER(users.email) LIKE ?) OR (LOWER(user_profiles.name) LIKE ?)" 、srchterm、srchterm)

于 2012-08-11T07:16:24.900 に答える