Cam*_*tin 4 ruby ruby-on-rails ruby-on-rails-3
我在rails应用程序中使用rack-mini-profiler,当它加载页面时,它有时会显示一些奇怪的查询,例如:
SHOW FULL FIELDS FROM `tablename`
SHOW TABLES LIKE 'tablename'
SHOW CREATE TABLE `tablename`
Run Code Online (Sandbox Code Playgroud)
他们说这些查询来自处理请求的控制器,来自一条线路
@model = Model.first()
Run Code Online (Sandbox Code Playgroud)
这些查询不会在连续的页面加载上执行.
为什么rails会生成这些奇怪的查询?
您可能已经意识到Rails会按照惯例自动将数据库中的字段映射到模型中的属性,这样您就不必在ActiveRecord类实现中明确定义"id","name"等.
为了让ActiveRecord模型生成正确的属性,Rails必须询问您的数据库模式.Mysql支持上面的命令以检查模式.
但是,ActiveRecord假设您的架构在应用程序运行的生命周期内不会发生变化,因此没有必要在后续请求中提出这些问题.