0

给定一个简单的文本字符串 search_for,它类似于“%mike%”,我想找到所有“user.email LIKE search_for”或“user_profile.name LIKE search_for”的用户

用户 has_one UserProfile

用户有一个 :email 字段

UserProfile 有一个 :name 字段

user.user_profile 可能不存在(例如,用户可能还没有名字)

我假设我首先需要一个 LEFT JOIN (所以我有所有用户,如果它存在,则与他们的 user_profile 一起加入),然后我需要能够指定 user.email 和 user_profile.name 作为 .where 子句的一部分,但我不能相当破解语法以使其工作。

任何帮助,将不胜感激。

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 回答