搞了几天rails了,太magic了。所以搞不清楚,只知道调用。
今天深入去了解了下 create_table 大家给指点指点
先请看流程:
再看 SchemaStatement 类的create_table()代码
ruby 代码
-
-
-
-
-
-
-
-
-
-
-
-
- def create_table(table_name, options = {})
- table_definition = TableDefinition.new(self)
- table_definition.primary_key(options[:primary_key] || "id") unless options[:id] == false
-
- yield table_definition
-
- if options[:force]
- drop_table(table_name, options) rescue nil
- end
-
- create_sql = "CREATE#{' TEMPORARY' if options[:temporary]} TABLE "
- create_sql << "#{quote_table_name(table_name)} ("
- create_sql << table_definition.to_sql
- create_sql << ") #{options[:options]}"
- execute create_sql
- end
大家明白了吧。
根据传递的参数,一步一步来创建 create_sql, 然后execute来执行。
字段的组合是用
yield table_definition
具体可以去跟踪 TableDefinition 类(schema_definitions.rb 文件里面, path: gems\1.8\gems\activerecord-2.0.1\lib\active_record\connection_adapters\abstract )
通过这个跟踪,知道了很多东西,不错。
现在也了解选项:force是什么意思。
也了解了 some_method *args do |something|
end
这种书写方法的意思。 do .... end就是 some_method 里面的yield
分享到:
- 2007-12-21 11:17
- 浏览 1559
- 评论(2)
- 论坛回复 / 浏览 (2 / 3136)
- 查看更多
相关推荐
捆绑执行rake db:create_migration NAME = create_words_table_again 建立表格 def change create_table:lines做| t | t.integer:line_number结束 或修改现有表 def change rename_column :songs, :numer_of_...
HasArrayOf ... # db/migrate/20141027125227_create_playlist.rb class CreatePlaylist < ActiveRecord :: Migration def change create_table :playlists do | t | t . integer :video_ids , a
migrate -path ./db/migrations create add_field_to_table migrate -url postgres://user@host:port/database -path ./db/migrations -timeout 10 up migrate -url postgres://user@host:port/database -path ./db/...
定义一个名为change的方法,并在该方法中使用Active Record create_table方法创建表。 该表应具有带string类型的:name列。 完成定义change方法后,通过在终端中运行rake db:migrate来运行rake db:migrate 。 添加...
定义一个名为change的方法,并在该方法中使用Active Record create_table方法创建表。 该表应具有带string类型的:name列。 完成定义change方法后,通过在终端中运行rake db:migrate来运行rake db:migrate 。添加列...
定义一个名为change的方法,并在该方法中使用Active Record create_table方法创建表。 该表应具有带string类型的:name列。 完成定义change方法后,通过在终端中运行rake db:migrate来运行rake db:migrate 。 添加...
定义一个名为change的方法,并在该方法中使用Active Record create_table方法创建表。 该表应具有带string类型的:name列。 完成定义change方法后,通过在终端中运行rake db:migrate来运行rake db:migrate 。 添加...
建立数据表 php artisan make:migration create_tasks_table --create=tasks 把表写入数据库 php artisan migrate 在生产环境中强制运行迁移,没有提示 php artisan migrate --force
database migrations 是laravel最强大的功能之一。数据库迁移可以理解为数据库的版本控制器。 在 database/migrations 目录中包含两个迁移文件...Migrated: 2014_10_12_000000_create_users_table Migrated: 2014_10_1
本文就详细的介绍了关于Laravel中migrate使用的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 生成迁移 命令: Migration php artisan make:migration create_users_table 意思:...
然后将此代码放在db/migrate文件夹中创建的文件中: class CreateContacts < ActiveRecord :: Migration [ 5.2 ] def change create_table ( :contacts ) do | table | table . string ( :first_name ) ...
1.打开 database/migrations/2014_10_12_000000_create_users_table.php 这个 migration 文件, 我们需要更改 user 表的结构 2.我们需要为 user 表添加 api_token 字段, 也就是说我们的 token 是保存在数据库中的, 在...
在本地主机上运行1, Install fe, run- yarn install- yarn watch2. copy .env.example .env3....Create5.1 Tạo migration- php artisan make:migration create_products_table --create=products5.2 Tạo mo
一、模型创建、数据迁移、以及关联模型控制器 $ php artisan make:model Brand -m //创建模型...$ php artisan migrate //运行迁移 ...路径:database/migrations/2018_10_16_0000_create_模型名s_table.php 在up方法
Laravel评分 Laravel 5评分系统安装首先,通过Composer拉入包装... php artisan rating:migration它将生成<timestamp>_create_ratings_table.php迁移。 您现在可以使用artisan migrate命令运行它: php artisan migrate
在2018_01_01_000000_create_regions_table.php可以根据自身需求与结构修改表名或分段名 执行迁移 php artisan migrate 默认方法 use Cblink \ Region \ Region ; $ region = new Region (); $ region -> ...
节点pg迁移 专为postgres构建的Node.js数据库迁移管理。 (但也可用于其他符合SQL标准的DB,例如 。)由,现在由维护。寻找v3文件? 参见。安装$ npm install node-pg-migrate pg安装此模块会将... createTable ( 'user
这允许您执行php artisan make:migration:schema create_dogs_table --schema="name:string:nullable, description:text, age:integer, email:string:unique"并获得可以使用php artisan migrate运行的完整迁移...
dist laravel/laravel:^7.0 blog //博客เป็นชื่อโปรเจค php artisan make:migration create_posts_table //สร้างตารางฐานข้อมูล php artisan migrateคำสั่งในการจำล...
作曲家创建项目 laravel/laravel authLaravelSimple --prefer-dist php artisan migrate:make create_users_table php工匠迁移php工匠数据库:种子/忘记密码/ php artisan auth:reminders-table php artisan 迁移/...