Rails生成奇怪的mysql查询

时间:2012-08-16 00:46:19

标签: ruby-on-rails ruby ruby-on-rails-3

我在rails应用程序中使用rack-mini-profiler,当它加载页面时,它有时会显示一些奇怪的查询,如:

SHOW FULL FIELDS FROM `tablename`
SHOW TABLES LIKE 'tablename'
SHOW CREATE TABLE `tablename`

他们说这些查询来自处理请求的控制器,来自一行

@model = Model.first()

这些查询不会在连续的页面加载时执行。

为什么rails会生成这些奇怪的查询?

1 个答案:

答案 0 :(得分:5)

您可能已经意识到Rails会按照惯例自动将数据库中的字段映射到模型中的属性,这样您就不必在ActiveRecord类实现中明确定义“id”,“name”等。

为了让ActiveRecord模型生成正确的属性,Rails必须询问您的数据库模式。 Mysql支持上面的命令以检查模式。

ActiveRecord假设您的架构在应用程序运行的生命周期内不会发生变化,但是,没有必要在后续请求中提出这些问题。