闲云无衣
无衣的笔记
一、命令方式创建支架
如果要创建一个控制器为companyuser、模型为CompanyUser的支架。只需要键入ruby script/generate scaffold CompanyUser companyuser
系统提示如下:
exists  app/controllers/
      exists  app/helpers/
      create  app/views/companyuser
      exists  app/views/layouts/
      exists  test/functional/
  dependency  model
      exists    app/models/
      exists    test/unit/
      exists    test/fixtures/
      create    app/models/company_user.rb  #模型文件
      create    test/unit/company_user_test.rb  #单元测试文件
      create    test/fixtures/company_users.yml  #测试夹具
      create  app/views/companyuser/_form.rhtml  #局部模板(与new和show相关)
      create  app/views/companyuser/list.rhtml  #数据库内容列表页面
      create  app/views/companyuser/show.rhtml  #显示某一数据库行的详细信息页面
      create  app/views/companyuser/new.rhtml  #新增一条数据库行页面
      create  app/views/companyuser/edit.rhtml  #删改某一数据库行的详细信息页面
      create  app/controllers/companyuser_controller.rb  #控制器文件
      create  test/functional/companyuser_controller_test.rb  #控制器文件(测试)
      create  app/helpers/companyuser_helper.rb  #辅助方法方法
      create  app/views/layouts/companyuser.rhtml  #布局模板
      create  public/stylesheets/scaffold.css  #样式表文件
这样一个MVC框架Web程序就基本形成了。
其中:
控制器文件为app/controllers/companyuser_controllers.rb
模型文件为app/models/company_user.rb
数据库表 company_users
URL http://localhost:3000/companyuser/list

笔者发现rails对脚本命令对模型和控制器名称的首字母大小写不敏感。如:ruby script/generate scaffold CompanyUser companyuser和ruby script/generate scaffold companyUser Companyuser是一样的。但对名称里的非首字母大小写敏感。若非首字母大写对于控制器,对于控制器文件名为从大写字母分开用下划线相连的字符串,如:若控制器名称为companyuser,控制器文件为companyuser_controllers.rb,类名为Companyuser, URL为 http://localhost:3000/companyuser/list;若控制器名称为companyUser,控制器文件为companyuser_controllers.rb,类名为Companyuser, URL为 http://localhost:3000/companyuser/list;若控制器名称为companyUser,控制器文件为company_user_controllers.rb,类名为CompanyUser, URL为 http://localhost:3000/company_user/list;可见在rails中一般形如:http://localhost:3000/controller/action/的URL请求中的controller不是类名而是文件名。

总结一下:

rails命名规定:
变量名应该全部小写,单词之间以下画线分隔;类和模块的名称中没有下划线,短语中每个单词的首字母(包括类和模块名称的首字母)大写;数据库表名像变量名一样,全部采用小写字母,单词之间以下画线分隔,并且表名始终是复数形式的;文件名全部采用小写字母,单词之间以下画线分隔;数据库表间关联的外键字段的名字应以被引用的目标表名为基础,将其转换为单数形式,并加上_id后缀;连接表名应以需要连接的两张表名称(按照字母顺序区分先后)用下画线连接。

模型名
CompanyUser

数据库表

 company_users

 CompanyUser

文件

 app/models/company_user.rb

控制器名
companyUser

URL

 http://localhost:3000/company_user/list

 Companyuser

文件

app/controllers/company_user_controllers.rb

方法(action名)

 list()

布局模板

 app/views/layouts/companyuser.rhtml

View

URL

 http://localhost:3000/company_user/list

文件

 app/views/companyuser/list.rhtml

辅助模块

 module CompanyUserHelper

辅助模块文件

app/helpers/company_user_helper.rb

二、使用scaffold方法
1.ruby script/generate model CompanyUser生成CompanyUser模型
2.ruby script/generate controller Companyuser 生成Companyuser控制器
3.在app/controllers/companyuser_controllers.rb文件中CompanyUserController类中加入scaffold方法:
class CompanyUserController < ApplicationController
    scaffold :CompanyUser

end

scaffold :CompanyUser语句与
scaffold :companyUser和scaffold :company_user等效的
posted on 2007-02-17 17:00 无衣 阅读(1047) 评论(0)  编辑  收藏 所属分类: rails