根据其他结果中的结果搜索记录

时间:2019-01-10 18:35:53

标签: ruby activerecord

我有四种记录。团队。教练玩家们。和家庭。

团队与教练有着一对多的联系。 教练与玩家有一对一的联系。 玩家与家庭有多对一的联系。

我需要找到的是与某些团队相关的特定家族。但是,由于他们的分离,我不能只去Team.last.family

是否有办法跳过球员和教练,并直接从诊所向家人提出疑问?

1 个答案:

答案 0 :(得分:1)

您很有可能需要使用joins方法。 如果您提供有关模型代码和模式的更多详细信息,我们可以提供更多详细信息,但这将与之类似。

Family.joins(some_join_object).where(some_sql_search_string)

一旦连接表包含所需的所有列,请指定要作为过滤条件的条件。

Family.joins(:players, :coaches, :teams).where("families.name='Wesley' and teams.name='Crushers'")

以下是提供的链接中的示例。

class Category < ApplicationRecord
  has_many :articles
end

class Article < ApplicationRecord
  belongs_to :category
  has_many :comments
  has_many :tags
end

class Comment < ApplicationRecord
  belongs_to :article
  has_one :guest
end

class Guest < ApplicationRecord
  belongs_to :comment
end

class Tag < ApplicationRecord
  belongs_to :article
end
  

12.1.3.2加入嵌套关联(多个级别)

Category.joins(articles: [{ comments: :guest }, :tags])
  

这将产生:

     

选择类别。*从类别INNER JOIN文章开启   article.category_id = Categories.id内部加入评论开启   comments.article_id = article.id内部加入访客   guest.comment_id = comments.id标签上的INNER JOIN标签。article_id=   article.id

     

或者用英语:“返回所有包含文章的类别,其中   文章中有客人发表评论,而这些文章也   有一个标签。”