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=>'sundi0105@hotmail.com')
注意rails的控制台行满不会换行显示而是后面内容变成>符号,如上语句就是:
结果如下
这样还不够,我们还需要模型的save方法将这个对象真正创建到user表中:
创建完之后可以使用user模型的find方法查看:
传入参数就是创建的id号,因为我们只创建了一个用户sundi所以id肯定是1
可以看到返回结果的后面还包含创建时间和更新时间,挺智能的。
我们查看所有则使用all方法,只有1个所以返回结果看起来一样,不过记住返回结果的数据类型是不一样的
通过这节课,我们算是基本了解了Rails中模型组件ActiveRecord类的相关概念,并通过创建一个user模型基本了解ActiveRecord的使用方法。
转载于:https://www.cnblogs.com/blueColdFire/p/5193856.html
9--Rails数据交互1相关推荐
- Cache 与Memory架构及数据交互
Cache 与Memory架构及数据交互
- java与c/c++之间的数据交互-----jni点滴
2019独角兽企业重金招聘Python工程师标准>>> 淡泊明志.宁静致远 A Diamond is just a piece of Coal that did well under ...
- AngularJs $resource 高大上的数据交互
$resource 创建一个resource对象的工厂函数,可以让你安全的和RESFUL服务端进行数据交互. 需要注入 ngResource 模块.angular-resource[.min].js ...
- ajax前后台交互 .net,使用ajax进行前后台的数据交互
1 什么是ajax: 异步的JavaScript和xml,跟后台交互,都用json 2 ajax干啥用的? 前后端做数据交互: 3 特点: -异步(异步和同步的区别:同步是请求发过去,要等 ...
- django前端引用数据_「基于Python技术的智慧中医商业项目」Django前端网站篇-5.资讯的数据交互...
如果你对中医感兴趣欢迎留言讨论,觉得我的内容对你有帮助的话,能够请我喝一杯沪上阿姨不禁万分感谢. 内容简介 本章介绍Django搭建中医网站项目平台前端建设之资讯模块的数据交互的内容.其中由于代码量较 ...
- Android开发之Service与Activity数据交互(源代码分享)
Service想要与Activity进行数据交互,首先Activity先得绑定Service.bound service是service 的实现,它允许其他应用程序绑定到它并与之交互.要提供bound ...
- Android开发之Fragment与Activity的数据交互通过回调机制实现(源代码分享)
上一篇文章简单介绍了Android的回调机制的使用,这一篇博文将重点介绍Fragment碎片与activity的数据交互,fragment在Android开发中起着至关重要的作用,通过官方Androi ...
- SpringMVC入门(二)—— 参数的传递、Controller方法返回值、json数据交互、异常处理、图片上传、拦截器
SpringMVC入门(二)-- 参数的传递.Controller方法返回值.json数据交互.异常处理.图片上传.拦截器 参考文章: (1)SpringMVC入门(二)-- 参数的传递.Contro ...
- 运用Smark.SocketAsyncs方便实现数据交互服务
Smark.SocketAsyncs是通过SocketAsyncEventArgs对Socket进行包装的处理程序,暂时只封装了对Tcp的支持.以下是通过Smark.SocketAsyncs封装一个简 ...
- 【清华集训2016】数据交互
[清华集训2016]数据交互 比较神的\(DDP\). 首先对于给出的一条链我们分两部分统计:\(lca\)以及其他部分. 我们设两个变量\(w_i,g_i\).一条路径的权值就是路径上所有点的\(w ...
最新文章
- Algorithms学习笔记-Chapter0序言
- 四十五、爬取QQ音乐Lemon 日语歌的评论
- 记一次继承了AbstractAuthenticationProcessingFilter 的过滤器被执行了两次问题
- MYSQL数据库的优化(二)
- 【BZOJ2054】疯狂的馒头(并查集)
- linux ora27040,AnyBackup-Oracle 异机恢复任务失败,执行输出提示 ORA-00344、ORA-27040 错误...
- 求1000的阶乘c语言编程,用C语言编写程序,求出1000的阶乘?
- Python 脚本相关知识
- ultraedit激活
- 元宇宙NFT商城系统|艺术数字藏品平台源码部署
- IAR for ARM系列教程(一)_新建软件工程详细过程
- erlang 学习ets表-2
- thinkphp5.0漏洞修复
- linux 双显示器 异常,终于搞定双显示器了
- python对于会计的好处_学好会计学的作用及意义
- 新项目筹划中。。。。
- 计算机视觉——Bag Of features图像检索
- VC++实现电脑睡眠/休眠/锁定/关闭屏幕
- Java 爪哇学习(三) 基础
- html5联网多媒体信息发布系统