跳转到内容

Ruby on Rails/示例

来自维基教科书,开放世界中的开放书籍


本节是Rails有用示例的集合。

重要说明

[编辑 | 编辑源代码]

rails 命令现在以 "rails" 开头,而不是 "script/"

逐步操作

[编辑 | 编辑源代码]

如何添加新表

[编辑 | 编辑源代码]
script/generate model <Name>

生成空的模型和迁移文件。

vi db/migrate/XXX_create_<Name>.rb

向表中添加列。

rake db:migrate

迁移数据级别 - 即 - 创建新的数据库表。

vi app/models/<Name>.rb

定义验证、大小等。

vi test/unit/<Name>_test.rb

定义对模型验证进行练习的单元测试。


如果将有与该模型关联的控制器(和视图)

script/generate controller <Name> <action_one> <action_two> ... 

创建控制器并为每个操作创建视图。

ActiveRecord 的 find 方法在Rails API 手册中进行了说明

pet = Pet.find(pet_id) 通过id(整数)查找记录。注意:返回一个对象。pet_id 应该是主键数字。

pets = Pet.find(:first, :conditions => ["owner_id = ?", owner_id]) - 返回第一个匹配的记录。[注意:返回一个对象。]

pets = Pet.find(:all, :conditions => ["owner_id = ?", owner_id]) - 查找所有具有给定字段值的记录。[注意:1. 返回一个对象数组。使用 pets.empty? 检查是否没有找到记录pets.empty?. 2.:conditions =>提供与 WHERE *一起使用的 SQL 片段]

pets = Pet.find(:all, :conditions => ["owner_id = ? AND name = ?", owner_id, name]) - 查找所有匹配多个字段值的记录。[注意OR也适用。]

pets = Pet.find(:all, :conditions => ["name LIKE ?", "Fido%"]) - 查找所有匹配模式的记录。通配符是%用于零个或多个任何字符,并且_用于任何单个字符。要转义通配符,请使用\%\_. 来自MySQL 的 LIKE 参考将有所帮助。在MySQL Regex 网站 上,您将找到使用 REGEX 的示例。

pets = Pet.find(:all, :order => 'name') - 查找所有内容并按名称排序结果

pets = Pet.find(:all, :limit => 10, :conditions => ["owner_id = ?", owner_id]) - 返回不超过:limit 指定的行数。

pets = Pet.find(:all, :offset => 50, :limit => 10) - 使用offset 跳过前 50 行。

$ rake db:migrate - 通过执行<app>/db/migrate 中的脚本迁移到最新级别<app>/db/migrate. 注意:迁移脚本是通过script/generate model <mod-name>

$ rake - 运行所有测试。

$ rake test:functionals - 运行功能测试,测试控制器。

$ rake test:units - 运行单元测试,测试模型。

$ test/functional/<name>_controller_test.rb - 运行一个功能测试。

$ rake doc:app - 为应用程序生成Ruby 文档。文档放在<app>/doc/app/index.html.

$ rake log:clear - 删除所有日志。

$ rake tmp:clear - 删除临时文件。

服务器

[编辑 | 编辑源代码]

$ script/server - 启动此应用程序的 Web 服务器。默认情况下,服务器在开发模式下运行。默认情况下,它可以在以下 Web 地址访问:https://127.0.0.1:3000/

$ RAILS_ENV=test script/server - 在测试模式下启动 Web 服务器。

$ script/server -e test - 在测试模式下启动 Web 服务器。

$ script/server -e production - 在生产模式下启动 Web 服务器(更多缓存等)。


修复错误

[编辑 | 编辑源代码]

无法将 Fixnum 转换为字符串

[编辑 | 编辑源代码]

some_number.to_s - 每个 Fixnum 都有方法.to_s将其转换为字符串。

Shell 命令

[编辑 | 编辑源代码]

一些我总是试图记住的有用的 shell 命令

grep -r hello . - 运行 grep,在从当前目录开始的树中的每个文件中搜索“hello”。

tar -cvzf archive.tgz <targ_directory> - 将目录打包并使用 gzip 压缩。

华夏公益教科书