2017-04-03 57 views
0

我on Rails的學習紅寶石的電子書: 如果我下面創建一個活動記錄:活動記錄將自動生成名稱

class Product < ApplicationRecord 
end 

Rails會執行下面的代碼生成一個表:

CREATE TABLE products (
    id int(11) NOT NULL auto_increment, 
    name varchar(255), 
    PRIMARY KEY (id) 
); 

在那裏,我有一個問題,我可以理解自動生成主鍵,但爲什麼如何理解:

name varchar(255), 

如果name字段是自動生成的?如果是,爲什麼有必要?

回答

0

是的,它會自動生成。但它不是主動記錄操作,它與數據庫有關。對於mysql,如果你沒有設置列的默認值,那麼它將默認爲NULLnil在ruby中。

即使您沒有爲特定列設置值,也需要將其顯示在數據庫中,或者作爲product.name訪問,因此有必要。

0

不,創建表'產品'的sql語句不是來自您的模型文件(product.rb),而是來自遷移文件。

在哪裏運行Rails rake命令:rake g型號產品名稱:sring, 它不僅會爲您創建模型文件(product.rb),還會在「db/migrate /」文件夾中創建遷移文件,命名爲「xxxxxx_create_products.rb」。打開這個文件,你會看到這樣幾行:

def change 
    create_table :products do |t| 
     t.string :name 
    end 
end 

這是Rails的是如何知道你要在你的「產品」 talbe哪些列,它們應該是什麼類型。 在運行此命令之前,不會創建此表:rake db:migrate。