2010-04-09 120 views
0

遷移模型我運行腳本/生成模型查詢在模型問題與紅寶石

編輯query.rb ..

class Query < ActiveRecord::Base #I even tried Migrations instead of Base 
    def sef.up 
    create table :queries do|t| 
     t.string :name 
    end 
    end 

    def self.down 
    drop_table :queries 
    end 
end 

,運行耙分貝:遷移。

和我在DB看到是這樣的:

mysql> desc queries; 
+------------+----------+------+-----+---------+----------------+ 
| Field  | Type  | Null | Key | Default | Extra   | 
+------------+----------+------+-----+---------+----------------+ 
| id   | int(11) | NO | PRI | NULL | auto_increment | 
| created_at | datetime | YES |  | NULL |    | 
| updated_at | datetime | YES |  | NULL |    | 
+------------+----------+------+-----+---------+----------------+ 

在哪裏 「名稱」 字段?

幫助!乾杯!

+0

您是否嘗試過重新啓動MySQL服務器來強制更新information_schema? – meagar 2010-04-09 17:19:14

回答

2

你想要的是script/generate migration your_migration_name

編輯#1

我會更好地解釋:

其實,當你運行script/generate model query一些文件被創建,包括models/query.rbdb/migrate/XXX_create_query.rb。要創建queries表必須編輯第二個文件(db/migrate/XXX_create_query.rb),並插入您發佈的代碼:

class CreateQueries < ActiveRecord::Migration 
    def self.up 
     create_table :queries do |t| 
     t.string :name 
     end 
    end 

    def self.down 
    drop_table :queries 
    end 
end 

,然後運行rake db:migrate

編輯#2

由於JacobM指出,因爲你已經運行rake db:migrate,現在你只需要創建另一個遷移

script/generate migration add_name_column_to_queries_table

編輯db/migrate/XXX_add_name_column_to_queries_table.rb文件中插入新的name列然後再運行rake db:migrate

+0

非常感謝! – Shreyas 2010-04-09 18:24:10

1

您的數據更改不會在您的模型中進行,而是發生在您的遷移中。當您運行腳本/生成模型時,除了models中的query.rb文件外,您還將在db/migrations中獲得一個XXX_add_queries.rb文件。這是您需要編輯以添加其他字段的文件。

但是,如果您已經運行rake db:migrate,那麼您需要添加一個新的遷移來添加新的字段(script/generate migration add_name_to_queries),編輯新的遷移文件並再次運行db:migrate。

+0

非常感謝! – Shreyas 2010-04-09 18:24:30