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