0

我正在阅读一本教程书,我遇到了一些我以前从未见过的东西。在 Rails 中,我习惯于获取这样的关系的值

<%= current_user.favorites.count %>

这本书的作者&在这样做时使用了操作符,它似乎做了同样的事情(我相信我理解&操作符,我只是从未见过这样使用它)

<%= current_user&.favorites&.count %>

对此没有任何解释,所以我认为它只是另一种编写方式,但在使用 Rails 和阅读书籍/教程的多年中,我从未见过这种情况。

这样做有性能原因,还是只是个人喜好?

turbo_frame_tag如果这有什么不同的话,那就是在里面。

4

1 回答 1

2

&是安全导航运算符,如果您在Nil.

它在这里的使用并不是那么奇怪——你所说的“关联”实际上只是一个方法生成了大概是has_many :favorites. 因此,无论记录是否存在,作者都在调用该方法,然后通过COUNT查询创建额外的数据库命中。不是很好。

if它也很愚蠢,因为你最喜欢用一些标记来包装它,所以无论如何你都需要一个。

使用安全导航操作符的长链被认为是一种反模式,因为它让你公然无视并掩盖错误,从而违反了得墨忒耳法则。

于 2021-11-29T16:43:59.637 回答