9--Rails数据交互1
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9--Rails数据交互1相关的知识,希望对你有一定的参考价值。
这部分要讲的就是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=>‘[email protected]‘)
注意rails的控制台行满不会换行显示而是后面内容变成>符号,如上语句就是:
结果如下
这样还不够,我们还需要模型的save方法将这个对象真正创建到user表中:
创建完之后可以使用user模型的find方法查看:
传入参数就是创建的id号,因为我们只创建了一个用户sundi所以id肯定是1
可以看到返回结果的后面还包含创建时间和更新时间,挺智能的。
我们查看所有则使用all方法,只有1个所以返回结果看起来一样,不过记住返回结果的数据类型是不一样的
通过这节课,我们算是基本了解了Rails中模型组件ActiveRecord类的相关概念,并通过创建一个user模型基本了解ActiveRecord的使用方法。
以上是关于9--Rails数据交互1的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 xcode 将快照划分为多个片段,以便让用户与每个片段进行交互?