如果关联不存在,ActiveRecord MySQL 来自自身和关联的查询 "Like" 检索 null

ActiveRecord MySQL query "Like" from self and associations retrieves null if associations are non existant

我有以下范围:

 scope :scope_name_or_email_search, lambda { |query = ''|
    joins(:user_information)
      .where('
        users.email LIKE ? OR
        user_informations.first_name LIKE ? OR
        user_informations.last_name LIKE ?',
             "%#{query}%", "%#{query}%", "%#{query}%")
  }

此范围仅检索具有“user_informations”数据的用户。
如果我搜索“@”,只会检索到具有“user_informations”数据的用户,但是他们的电子邮件中都包含字符“@”。

最好的方法是什么?

解决方法很简单。我需要在查询中留下一个连接,所以 ActiveRecord 范围将变成这样:

scope :scope_name_or_email_search, lambda { |query = ''|
    left_joins(:user_information)
      .where('
        users.email LIKE ? OR
        user_informations.first_name LIKE ? OR
        user_informations.last_name LIKE ?',
             "%#{query}%", "%#{query}%", "%#{query}%")
  }