码迷,mamicode.com
首页 > 其他好文 > 详细

9--Rails数据交互1

时间:2016-02-16 22:06:23      阅读:268      评论:0      收藏:0      [点我收藏+]

标签:

这部分要讲的就是MVC中的模型M。

技术分享

ActiveRecord是Rails进行数据库操作的核心组件,采用标准的ORM模型,将数据库的表映射到相应的类,将行记录对应到具体的实例对象,字段对应的是实例对象的属性。

ORM模型就是对数据库的高级封装,也就是让我们不使用复杂的SQL语句就能对数据库进行操作。而且这样我们不用去关心数据库是mysql还是sqlite,都是一样地去调用接口就可以了。ORM的缺点就是不够灵活,有时候会影响数据库存储的效率,不过效率我们不考虑,我们考虑快捷开发即可。

技术分享

下面针对上图展开:

一个ActiveRecord也就是模型类,对应一张数据库的表

比如我们用ActiveRecord创建了一个实例对象,那么这个实例对象往往对应这张表中的一行记录(也可以是多行记录)。

一个实例对象中的属性就对应着行中的某个字段。

下面继续完善我们的微博实例:

技术分享

如上,rails自动生成的Post模型还什么都没有,它继承于ActiveRecord这个类,而这个类本身就封装了很多数据库的操作方法了,比如下面的Post.all就是ActiveRecord的数据库操作方法。控制器文件中的Post就是上面的模型类,所以模型类没有代码,也可以在控制器文件中直接使用(都封装起来了)。

如下posts变量就是实例对象,也就是行记录(这里是多行)

技术分享

Rails官方文档,使用举例,比如ActiveRecord中的即Post.all的all方法在文档中如下,也就是查询到模型中的所有数据:

技术分享

对应index视图中第14行就是字段,也就是取出每条记录的content字段或者说模型实例的content属性。

技术分享

我们还需要用户模型,用户具有注册,发布微博的功能等等,因为功能很多所以我们实际上要添加的是用户资源(控制器、视图、模型一大堆都包含),但是我们这里讲的是模型,我们就创建一个用户模型好了,控制器那些后面再加上去也一样。创建模型还是使用generate命令,注意创建资源我们用复数,但是控制器或模型都用单数,如下是user而不是users

技术分享

我们给user表创建两个字段,一个是username类型为string,一个是email类型为string

模型创建好之后还是先进行数据库迁移操作,输入rake db:migrate就可以了:

技术分享

这时候user模型才算是真正可以使用了。因为没有给user添加相应的控制器、视图、模型,所以不能在网页上进行之前那样的操作,只有模型我们就先在rails控制台进行操作(不是cmd控制台就行)。我们要进入rails的控制台,(记住必须在工程目录下执行 rails console命令)如下

技术分享

这样我们就可以使用rails的控制台了,下面我们用rails的相关方法创建一个名字叫sundi的用户:

输入第一行命令后点击回车即可

技术分享

如上就完成了在内存中创建User对象了(表是user表,只有这里U是大写),但是我们还没把对象保存到变量里,无法对对象进行操作。所以我们先把该对象保存到变量user

@user=User.new(:userName=>‘sundi‘,:email=>‘sundi0105@hotmail.com‘)

注意rails的控制台行满不会换行显示而是后面内容变成>符号,如上语句就是:

技术分享

结果如下

技术分享

这样还不够,我们还需要模型的save方法将这个对象真正创建到user表中:

技术分享

创建完之后可以使用user模型的find方法查看:

传入参数就是创建的id号,因为我们只创建了一个用户sundi所以id肯定是1

技术分享

可以看到返回结果的后面还包含创建时间和更新时间,挺智能的。

我们查看所有则使用all方法,只有1个所以返回结果看起来一样,不过记住返回结果的数据类型是不一样的

技术分享

通过这节课,我们算是基本了解了Rails中模型组件ActiveRecord类的相关概念,并通过创建一个user模型基本了解ActiveRecord的使用方法。

9--Rails数据交互1

标签:

原文地址:http://www.cnblogs.com/blueColdFire/p/5193856.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!