我正在閱讀一本教程書,遇到了一些我以前從未見過的東西。在 rails 中,我習慣于獲取這樣的關系的值
<%= current_user.favorites.count %>
這本書的作者&在執行此操作時使用了運算子,這似乎是在做同樣的事情(我相信我了解&運算子,我只是從未見過這樣使用它)
<%= current_user&.favorites&.count %>
對此沒有任何解釋,所以我認為它只是另一種撰寫方式,但在多年使用 Rails 和閱讀書籍/教程的程序中,我從未見過這種情況。
這樣做是否有性能原因,還是只是個人喜好?
turbo_frame_tag如果這有什么不同的話,它就在里面。
uj5u.com熱心網友回復:
& 是安全導航運算子,如果您呼叫不存在的方法方法(例如在 Nil 上呼叫方法),則可以防止 NoMethodError。
它在這里的使用并不是那么奇怪 - 您所說的“關聯”實際上只是一種生成可能是has_many :favorites. 所以在這里,無論記錄是否存在,作者都會呼叫該方法,然后通過COUNT查詢創建額外的資料庫命中。不是很好。
它也有點傻,因為你最喜歡用一些標記來包裝它,所以你if無論如何都需要一個。
使用安全導航算子的長鏈被認為是一種反模式,因為它讓你公然無視迪米特法則并掩蓋錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/369452.html
