在 Rails 中引用关系时使用 &

Using & when referencing relationship in Rails

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

<%= current_user.favorites.count %>

尽管这本书的作者在执行此操作时使用了 & 运算符,但它似乎做了同样的事情(我相信我理解 & 运算符,我从未见过它像这样使用)

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

对此没有解释,所以我把它当作另一种写法,但在使用 Rails 和阅读 books/tutorials 的多年中我从未见过这种情况。

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

它在 turbo_frame_tag 里面,如果这有什么区别的话。

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

上调用方法,它可以防止 NoMethodError

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

它也有点傻,因为你最想用一些标记来包装它,所以无论如何你都需要一个 if

使用安全导航运算符的长链被视为某种反模式,因为它可以让您公然无视得墨忒耳法则并掩盖错误。