Mysql Railed数据库嵌套搜索混淆:第2部分

Mysql Railed数据库嵌套搜索混淆:第2部分,mysql,sql,ruby-on-rails,Mysql,Sql,Ruby On Rails,不久前我问 这是我的疑问: def self.search(search) query = "%#{search}%" if search joins(:hobbies) .where("user_name like ? or first_name like ? or hobbies.name like ? or hobbies.type like ?", query, query, query, query) else self.all end en

不久前我问

这是我的疑问:

def self.search(search)
  query = "%#{search}%"
  if search
    joins(:hobbies)
      .where("user_name like ? or first_name like ? or hobbies.name like ? or hobbies.type like ?", query, query, query, query)
  else
    self.all
  end
end
然而,我现在有了第二个我想搜索的嵌套属性——games

但这不起作用。我怎样才能把它们连接起来呢?

你漏掉了一个点

def self.search(search)
  query = "%#{search}%"
  if search
    joins(:hobbies)
    .joins(:games)
      .where("user_name like ? or first_name like ? or hobbies.name like ? or hobbies.type like ? or games.number like ?", query, query, query, query, query)
  else
    self.all
  end
end
写这篇文章的更好方法是

def self.search(search)
  query = "%#{search}%"
  if search
    joins(:hobbies, :games)
      .where("user_name like ? or first_name like ? or hobbies.name like ? or hobbies.type like ? or games.number like ?", query, query, query, query, query)
  else
    self.all
  end
end

哇,太简单了!太棒了!
def self.search(search)
  query = "%#{search}%"
  if search
    joins(:hobbies, :games)
      .where("user_name like ? or first_name like ? or hobbies.name like ? or hobbies.type like ? or games.number like ?", query, query, query, query, query)
  else
    self.all
  end
end