ruby-on-rails 使用搜索关联表的LIKE创建Rails查询

hsvhsicv  于 2022-11-19  发布在  Ruby
关注(0)|答案(2)|浏览(177)

我想用Postgresql 'LIKE'写一个Rails查询。我希望能够搜索当前表和关联表上的列。
我可以像这样搜索当前表:User.where("description LIKE ?", "%happy%")
我可以这样搜索关联:User.joins(:products).where("products.description LIKE ?", "%happy%")
我如何将这两个查询合并为一个?我想返回描述中包含“happy”的所有用户和/或拥有描述中包含“happy”的产品的所有用户。

798qvoo8

798qvoo81#

和版本

User.joins(:products).where("users.description LIKE ? AND products.description LIKE ?", "%happy%", "%happy%")

或版本

User.joins(:products).where("users.description LIKE ? OR products.description LIKE ?", "%happy%", "%happy%")
nbnkbykc

nbnkbykc2#

利用squeel gem

def self.any_description_like(criteria)
    User.includes(:products).where{
      (users.description =~ "%#{criteria}%") |
      (products.description =~ "%#{criteria}%")
     } 
  end

相关问题