在Rails中拥有额外的“便利”关联是一种好习惯吗?

时间:2018-09-06 23:42:14

标签: ruby-on-rails

我有一个带有几个嵌套级别的数据库架构。假设它有一个User模型,其中has_many FooFoo has_many BarBar {{1} } has_many。现在假设我要返回属于给定Baz的所有Baz。当然,有一种方法可以通过上面的关联来实现,但是据我所知,它是circuit回的。

为了方便起见,我只是说User User has_manyFoo Bar。然后,我可以轻松调出属于Baz的所有记录。此外,每当我发现自己经常需要访问几个嵌套级别的关联时,我就继续创建直接关联。到目前为止,似乎一切正常。

我在网络上真的找不到太多关于这种做法的信息,所以我担心它做的不多,而且可能不是一个好方法。这个可以吗?是否有更好的方法通过这样的嵌套关联移动嵌套?

2 个答案:

答案 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