在Rails中做正确的方法是什么?

Got*_*osh 7 ruby sql ruby-on-rails count

我有一个rails应用程序,其中包含以下许多代码:

Our active community of <%= Account.find_all_by_admin(false).count %>
Run Code Online (Sandbox Code Playgroud)

我的问题是这是对观点进行计数的正确方法吗?看起来如此"肮脏"是否有更多的铁路,做点算的方法?我也许正在考虑命名范围,但我只是想确保这些类型的事情不会对性能产生更大的影响.

谢谢,

Sim*_*tti 10

您不需要名称范围来执行计数.

Account.where(:admin => false).count
Run Code Online (Sandbox Code Playgroud)

但命名范围是使代码更可重用的绝佳方法.

命名范围对您的应用程序没有任何明显的性能影响.


key*_*one 7

我建议你避免在我的模板中直接访问数据库,因为在缓存方面你会失去一些灵活性.

尝试准备您需要在操作中呈现的所有数据,然后使用有意义的实例变量,如@number_of_accounts或@accounts.count.

这将使您的视图更清晰,更容易调试,如果您以不同的格式(html,json等)呈现操作,也会更加干燥

至于你如何获得你的数字 - 这并不重要,只需从find_*方法转向范围界定并编写可读代码