Quantcast
Channel: panjj 最新博客
Viewing all articles
Browse latest Browse all 59

Rails中数据库和Model

$
0
0
Django的Model属性定义和数据库字段相对应的,Model算是显性定义,如果只定义Model而没有更改数据库表结构,执行程序前就出错了;而Model属性和数据库的字段类型不对应上,在执行程序的时候,也同样报错了。其实Django也有些数据库迁移的概念,第三方的应用有South 能作为数据迁移的解决方案。而Django自带的迁移,就没有做得那么“智能”了;Model定义完成后,执行命令manange.py syncdb,Django会根据存不存在该表,不存在时,会根据定义的Model的属性同步数据的表的字段。当你添加修改删除Model的一个属性时,指定该命令不会做任何操作,因为表已经存在了,Django认为数据库和Model已经同步了。这样的情况你需要手动添加修改删除表的相应字段。Django让你自己选择方式去同步它(执行Sql语句更改表结构,Django有生成Sql的命令,或者使用管理工具操作)

今天看看Rails的东西。Rails并不会显性定义Model的字段,在Model里你看不到任何的表字段对应的属性,在schema.rb文件里你能看到数据迁移后的表结构字段。在Rails里,只要数据库的表结构存在了,Model就自然拥有表字段相对应的属性了。比如数据库里有posts表,字段是id title content author url;那么你自然在Model和View等整个项目里使用它们。突然你在数据库增加了hit字段,Model自然就存在了hit。嗯这个东西很酷。如果当数据库里删除了一个字段title,那Rails 就提示出错了,你需要在项目里用到Post的 title属性也清除掉,这是很符合常理。但Rails更建议你使用它自带的数据库迁移工具,我们要按Rails的约定做数据库迁移,你能享受更多的优待。这样的好处显而易见,你不用接触底层的数据库操作,再者项目可以自如向前向后更改,而且在开发中按照Rails的约定开发,你不会遇到一些莫名错误的困扰。

了解了Rails的做法,算是找到学习Rails的突破口了,除了详细读读Rails的命名约定之外,你可能最先要熟悉Rails迁移指令了。熟悉了两个地方你往后的学习,如水得鱼了.

Viewing all articles
Browse latest Browse all 59

Trending Articles