- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用Rails中Rake管理MySQL数据库.doc
用Rails中Rake管理MySQL数据库教育资源库
作为一名优秀的程序员,除了编写大量的程序外,创建大量的数据库也是在所难免的。在过去的几年中,笔者曾经创建和管理了大量的MySQL数据库,在这个过程中曾使用各种工具来进行管理,以便使它的过程更简单,例如首选的图形化管理工具PHPMyAdmin,以及基于命令行的MySQL clent,它们都非常好用。但是,在笔者内心身处始终觉得,我们是一名程序员,而不是一名数据库管理员,总感觉编程和数据库管理之间有些跨越。为什么不用与编程相同的方式来管理数据库结构呢?自从开始使用Rails,终于找到了答案。通过Rails的功能,可以使用程序员的方式来管理MySQL数据库了。 一、使用Migrations管理数据表
在Rails中,当创建一个叫contact的model时,同时一个名为contacts的数据表将会被创建。因此,对数据表contacts的操作可以转换成对模型contact操作,可以访问它的属性。而很多的新手习惯使用一些框架什么的来操作数据表,其实,可以通过Rails本身提供的功能就可以操作数据表了。这样的功能就是Migrations功能。
多数Rails开发者使用Migrations迁移的基本功能来创建和管理数据库。数据迁移功能让你可以使用Ruby语言来管理数据库方案,可以充分利用一些Ruby所特有的工具,诸如Rake,来根据Ruby脚本提供的指令来更新数据库。还有,数据迁移功能还具有一个内置的版本控制功能,可以像在Subversion或CVS中那样对所做的修改进行前后的回滚。听起来是不是很具有诱惑力呢?
Migrations有点像活动记录(Active Record,一个对象,它包装数据库表或视图中的某一行,封装数据库访问,并在这些数据上增加了领域逻辑),可以通过Migrations进行程序形式的管理数据表,即可以创建、修改、删除表格,而且语法很简单。更重要的是,Migrations提供了一个构建的控制器。
事实上,当在Rails下创建一个新的model时,会自动的创建Migration文件。例如,创建一个contact模型时,在项目的db目录下,即可发现一个名为001_create_contacts.rb的文件,其内容如下所示:
classCreateContactslt;ActiveRecord::Migration
defself.up
create_table:contactsdo|t|
end
end
defself.don:name,:string,:null=gt;false
t.column:email,:string
t.column:phone,:string,:limit=gt;10,:null=gt;false
end
end
defself.doigrate
现在登陆MySQL数据库中,可以看到,contacts表已经创建好了。那么,如果想撤消刚才的创建要怎么办呢?要回滚上面的操作可以使用VERSINO选项。因为数据移植功能的工作原理与版本控制工具很相似,你可以将数据库回滚到一个早期的版本。版本号是由数据移植脚本所提供的数字来确认的:
%gt;rakedb:migrateVERSION=0
再次登陆MySQL数据库,可以看到contacts表已经删除掉了。此外,如果想进行其它一些更加复杂的操作时,自然而然想到通过创建另一个migrations。例如,想另外创建一张表,或修改字段的数据类型等。可能在项目的目录下运行如下的代码来创建一个新的migration文件:
%gt;rubyscript/generatemigrationyour_desired_migration_name
二、从Fixture中加载数据
在创建一个应用程序时,我们往往遇到这样的情况,手边已经有了一些数据,需要将这些现成的数据融合到应用程序的数据库中去。例如,在进行客户的结帐时,往往需要询问客户,以确定他们居住在哪个州。因为州名可能在程序中很多地方使用到,于是就有必要创建一个名为state的model。但这里又不想手工的创建这样的表格,因为这样做不只是很烦琐,更重要的是可能导致错误。
这个时候,就可以使用fixtures这一功能了。它最初的目的,是为了在进行程序测试时,简化从示例数据向测试数据的转换工作。Fixture是包含运行测试时使用数据的文件。但是,稍微加工一下,我们也可使用它们在migration迁移期间来加载数据。
但后来的事实证明,这是一种很不错的方法,可以使用种子数据生成测试的Model,例如前
文档评论(0)