このレベルで Rails のデータベースを扱うのは初めてで、数時間探しましたが、この特定の問題に対する解決策が見つかりませんでした。
バージョン: Rails 3.2.9、Ruby 1.9.3、MySQL 5.5.28 (mysql2 gem 2.9.0)、Mac OS 10.7.5
エラー:
ActiveRecord::StatementInvalid in Action_figures#list
Mysql2::Error: Unknown column 'action_figures.position' in 'order clause': SELECT `action_figures`.* FROM `action_figures` ORDER BY action_figures.position ASC
抜粋ソース(14行目あたり): [list.html.erb]
11: <th>Visible</th>
12: <th>Actions</th>
13: </tr>
14: <% @action_figures.each do |action_figure| %>
15: <tr>
16: <td><%= action_figure.position %></td>
17: <td><%= action_figure.name %></td>
ActionFigures モデルとコントローラーを生成しましたが、移行ファイルで:position、:name などを後で指定しました。
class CreateActionFigures < ActiveRecord::Migration
def change
create_table :action_figures do |t|
t.string "name"
t.integer "position"
t.boolean "visible", :default => false
t.timestamps
end
end
end
そして、これはモデルで:
class ActionFigure < ActiveRecord::Base
has_many :pages
attr_accessible :name, :position, :visible
end
私はrake db:migrate
すでに数回実行し、サーバーを停止して再起動し、ターミナルを閉じて再度開いて、それがそれらのものではないことを確認しましたが、そうすると:
mysql> SHOW FIELDS FROM action_figures;
次の表を取得します。
+------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+------------+----------+------+-----+---------+----------------+
質問:
- :name、:position、:visible がテーブルに表示されないのはなぜですか?
- 今すぐ追加するにはどうすればよいですか?