我正在使用Ruby on Rails v3.0.9,我在我的模型中有以下代码:
class User < ActiveRecord::Base
validates :users_role,
:inclusion => {
:in => UserRole.all.map(&:role)
},
:presence => true
end
当我浏览UserRole相关页面(即涉及用户对象实例的页面 - 例如,RoR常规“show”或“index”视图)时,我检查日志文件,我看到执行UserRole SQL查询。也就是说,UserRole.all.map(&:role)
运行。
我想知道Ruby on Rails如何适用于上述情况。 它关系到性能? UserRole.all.map(&:role)
懒惰加载了吗?
答案 0 :(得分:0)
在您的开发环境中,您可能会看到该查询在任何验证用户的请求上运行,因为代码会在每个请求上重新加载。在生产模式下尝试一次,在这种情况下不应该发生,因为代码只加载一次而你没有将查询放在lambda中。这里应该没有延迟加载,因为您已在结果集上调用map
。