CookBook-1 Rails常用命令
1. 新建程序
rails new blog
新建一个blog的rails项目,会自动创建一系列文件夹和文件,主要文件和作用如下表所示
文件/文件夹 | 作用 |
---|---|
app/ | controllers,views,models,helpers,mailers |
bin/ | 运行程序的rails脚本 rails rake bundle等 |
config/ | routes database.yml |
db/ | 当前数据库模式,以及数据库migrate文件 |
Gemfile | 指定gem依赖件 |
2. 启动/停止服务
rails server
&rails s
完成程序后,开启Ruby的内置服务器WEBrick,访问http://localhost:3000
,可以看到Rails信息页面,类似PHP的phpinfo()
Control + C
停止Ruby内置服务器WEBrick
3. 创建动作控制器Controller
Action Controller 是 MVC 中的 C(控制器)。
控制器负责解析用户请求,生成对应的请求。
控制器可以视作模型和视图的中间人,让模型中的数据可以在视图中使用,把数据显示给用户,再把用户提交的数据保存或更新到模型中。
Rails提供命令自动创建控制器,命令如下
rails generate controller welcome index
或者
rails g controller welcome index
使用后,主要效果如下表所示:
动作 | 文件 |
---|---|
<font face="monospace">create app/controllers/welcome_controller.rb</font> | 创建welcome的控制器rb文件 |
route get ‘welcome/index' | 配置相关路由 |
create app/views/welcome create app/views/welcome/index.html.erb | 创建welcome的index视图 |
在Controller中可以编写所有的action,如果是RESTful的资源的话,主要有index、show、edit、update、delete等action
4. 创建模型Model
Active Record 是 MVC 中的 M(模型),处理数据和业务逻辑。
Active Record 负责创建和使用需要持久存入数据库中的数据,是一种对象关系映射系统。
Rails提供命令自动创建控制器,命令如下
rails generate model articles
或者
rails g model articles
使用后,主要效果如下表所示:
动作 | 作用 |
---|---|
create db/migrate/20160821103242_create_articles.rb | 创建数据库迁移migrate文件 |
create app/models/article.rb | 创建artcile模型 |
5. 运行数据库迁移
每次在db/migrate文件夹中生成数据库迁移文件后,可以运行rake任务进行迁移(rails5.0以后,rake改为了rails)。
命令如下
rake db:migrate
Rails会执行迁移操作,在config/database.yml中的配置的数据库中做数据库表进行操作,如新建数据表,定义相关参数等
up()方法会清空数据表,然后再增加相关记录
down()方法会清空数据表
6.撤销创建好的Model和Controller
rails不但可以使用generate自动创建model和controller,还可以撤销,也就是删除。
命令如下
rails destroy model articles
或
rails d model articles
7 脚手架
利用一条命令,Rails可以自动建立controller、model、view、route,并且完成CRUD的action的创建
rails g scaffold product
8 创建数据迁移任务
在对数据库操作时,可以创建数据库迁移任务migration,在db/migratino/下创建
rails g migration add_price_to_product price:decimal
创建一个add_price_to_product的迁移任务,从字面上看是在product数据表中增加一个price属性,price是decimal类型的
迁移任务的源文件如下:
class AddPriceToProduct < ActiveRecord::Migration
def change
add_column :products, :price, :decimal
end
end
在products表中增加decimal类型的price列
网友评论