未定义的方法`explain'for#

时间:2012-01-29 23:44:55

标签: mysql ruby-on-rails rubygems ruby-on-rails-3.2 rails-activerecord

我是Ruby on Rails的新手,但我已经学过一些教程,并且知道我的方法。我已经生成了一些脚手架并将数据插入到MySql数据库中。

导航到index.html.erb时,我收到标题中的错误

控制器正在执行索引

  def index
    @beers = Beer.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render :json => @beers }
    end
  end

并将此作为结构

Beer: id, brewer_id, name, price, score, color, brew_type, create_at, updated_at

RoR正在为我创建的其他脚手架工作,并列出数据。我更新了实体Beer的mysql结构,它可能没有反映rails中的变化(dunno)。

我是否需要一个不同的gem来将rails连接到mysql db?任何关于检查什么的建议都将受到赞赏(:

1 个答案:

答案 0 :(得分:24)

我猜你正在使用Rails 3.2并且你的Beer.all电话花了太长时间。来自3.2 release notes

  

在开发模式中解释运行时间超过半秒的查询自动。当然,这个门槛可以改变。

如果我们查看MySQL adapter for Rails,则没有explain方法。但是,MySQL2 adapter确实了解explain

首先,你可能需要更少的啤酒或一些分页。然后,您应该尝试切换到MySQL2适配器;只需安装新适配器,方法是修改Gemfile以使用mysql2,运行bundle以设置新内容,然后将database.yml更改为更像这样:

development:
  adapter: mysql2