在我看来,我经常调用rails find
方法。这是一种普遍接受的良好做法吗?我倾向于不,但为什么? find
每次调用数据库吗?它是否将结果缓存到任何地方?我在find
上查找了ruby / rails文档,但是他们没有指定它是否实际上每次都调用数据库。
答案 0 :(得分:1)
不,从视图中调用find
不是一个好主意。控制器的工作是加载和组装视图所需的所有数据,并将其传递给视图以呈现给用户。
Rails会缓存对同一对象的find
的重复调用,因此除非参数或其他参数不同,否则每次都不会访问数据库。
答案 1 :(得分:0)
测试此功能的一种简单方法是启动终端并运行rails c
。在控制台中,运行返回tplangroup
的代码并在控制台中使用它。您应该能够在开发控制台中看到数据库调用。
根据我的经验(目前不在带有rails的计算机上)我认为除非您使用tplangroup
创建.includes(:tplan)
以进行预先加载,否则它会在每次调用中访问数据库。 / p>
希望这有帮助