活动记录将自动生成名称

时间:2017-04-03 02:58:57

标签: ruby-on-rails

我研究了Ruby 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字段是自动生成的?如果是,为什么有必要?

2 个答案:

答案 0 :(得分:0)

是的,它会自动生成。但它不是一个活跃的记录动作,它与数据库有关。对于mysql,如果您没有为列设置默认值,那么它将默认为rubin中的NULLnil

即使您没有为特定列设置值,也需要在数据库中显示,或者以product.name访问,所以必要。

答案 1 :(得分:0)

不,用于创建表&#39;产品的sql语句&#39;不是来自您的模型文件(product.rb),而是来自迁移文件。

运行Rails rake命令的位置:rake g model产品名称:sring, 它不仅会为您创建模型文件(product.rb),还会在&#34; db / migrate /&#34;中创建一个迁移文件。文件夹,命名为&#34; xxxxxx_create_products.rb&#34;。打开此文件,您将看到如下行:

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

这就是Rails如何知道您希望在您的&#34;产品中拥有哪些列?&#34; talbe,它们应该是什么类型。 在运行此命令之前,不会创建此表:rake db:migrate。