我有一个带有几个嵌套级别的数据库架构。假设它有一个User
模型,其中has_many
Foo
和Foo
has_many
Bar
和Bar
{{1} } has_many
。现在假设我要返回属于给定Baz
的所有Baz
。当然,有一种方法可以通过上面的关联来实现,但是据我所知,它是circuit回的。
为了方便起见,我只是说User
User
has_many
,Foo
,和 Bar
。然后,我可以轻松调出属于Baz
的所有记录。此外,每当我发现自己经常需要访问几个嵌套级别的关联时,我就继续创建直接关联。到目前为止,似乎一切正常。
我在网络上真的找不到太多关于这种做法的信息,所以我担心它做的不多,而且可能不是一个好方法。这个可以吗?是否有更好的方法通过这样的嵌套关联移动嵌套?
答案 0 :(得分:1)
我认为以这种方式使那些东西相互属于对方是可以的。
例如,我认为没有更好的方法:
Author has_many books has_many pages has_many words has_many letters
您可以通过以下方式链接它们:
Author has_many pages, through: :books
Rails会找出连接,并使代码更具可读性。
您需要始终链接各个模型才能进行Author has_many letters, through: :books
,例如:
Books has_many words, through: :pages
Pages has_many letters, through: :words
答案 1 :(得分:0)
我将使用联接,并创建一个辅助方法,该方法将进行深层嵌套查找,并以我需要的方式收集记录。您可以在Rails - Nested includes on Active Records?上了解有关深层嵌套包含的更多信息。我不能说自己是否是最佳实践。
struct