问题
I'm new to Ruby on Rails, but I have followed some tutorials and know my way around a little bit. I have generated some scaffolding and inserted data into a MySql database.
When navigating to index.html.erb I receive the error in the title
The controller is executing index
def index
@beers = Beer.all
respond_to do |format|
format.html # index.html.erb
format.json { render :json => @beers }
end
end
And has this as a structure
Beer: id, brewer_id, name, price, score, color, brew_type, create_at, updated_at
RoR is working for other scaffolding I have created, and listing data. I updated the structure in mysql for the entity Beer, and it probably hasn't reflected changes in rails (dunno).
Do I need a different gem for connecting rails to a mysql db? Any advice on what to check for would be appreciated (:
回答1:
I'm guessing that you're using Rails 3.2 and that your Beer.all
call is taking too long. From the 3.2 release notes:
Queries that take more than half a second to run are automatically explained in the development mode. This threshold, of course, can be changed.
And if we look at the MySQL adapter for Rails, there is no explain
method. However, the MySQL2 adapter does understand explain
.
First of all, you probably need less beer or some pagination. Then, you should try switching to the MySQL2 adapter; just install the new adapter by editing your Gemfile
to use mysql2
, run bundle
to get the new stuff set up, and then change your database.yml
to look more like this:
development:
adapter: mysql2
来源:https://stackoverflow.com/questions/9057863/undefined-method-explain-for-activerecordconnectionadaptersmysqladapter