- 浏览: 888021 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1096)
- 大数据存储 (76)
- 编程语言(Java&Scala) (46)
- 大数据建模 (33)
- 开发与管理 (8)
- 操作系统 (13)
- 实用代码集合 (25)
- 新技术研究 (15)
- 前端技术研究 (22)
- 物联网 (18)
- 兴趣探索 (15)
- 编程语言(Groovy&Grails) (92)
- 编程语言(RubyOnRails) (153)
- 个人收藏 (153)
- 技术管理 (12)
- 编程语言(Flex) (8)
- 架构和框架(GWT) (4)
- 数学和算法 (6)
- 人工智能(TensorFlow) (11)
- 编程语言(Python) (6)
- 移动开发 (4)
- 软件工程实践 (54)
- 个人感悟 (6)
- 职场感悟 (5)
- 行业经验 (23)
- 产品和运营 (10)
- 生活与随想 (155)
- 简单生活 (70)
- 天空的云 (53)
- 秋月春风 (14)
- 东逝水 (59)
- 浪花淘 (35)
- 白发渔樵 (4)
最新评论
-
cljhyjs:
今天看看在研究,已经安装好了,请问怎么一步一步使用呢?
Thingsboard -
yx200404:
说一下十维空间 -
Clear_Love:
设置了也报错
Xcode 7遇到 App Transport Security has blocked a cleartext HTTP 错误 -
wang263574375:
我想问的是,如果防火墙的设置不能改变,那么要怎么处理呢?
ORA-12571:TNS包写入程序失败 -
ralflsb:
SmartSVN 8.6
SmartSVN破解包
ActiveRecord介绍
1.当你创建一个ActiveRecord::Base的子类,实际上是包装一个数据库表。
2.active record假定表名是类的复数形式。如果类名包含多个以大写字母开头的单词,表名会假定以下划线分隔这些单词。
3.如果你不喜欢上面的做法,你可以这样:在配置文件中设置一个全局变量关闭它,在config目录下environment.rb文件中设置。
4.连接数据库
active record把数据库连接的概念抽象出来,有助于程序处理各种特殊数据库的底层细节.active record程序使用通用的调用,代理了一组数据库适配器的细节.
指定连接的一种方式是使用establish_connection()类方法。
举例来说,
第二种方式是:我们还可以在config/database.yml的配置文件中设置连接参数。
这样做的好处不仅在于连接信息和代码分离,而且有利于测试和部署。
5.创建新记录
我们可以通过调用Order.new()来创建一个对象,表示orders表中的行。然后填充各属性的值,对应表的各列。最后调用对象的save()方法存储到数据库。
active record的constructor可以有一个可选的块参数。如果用上的话,这个块会作为一个参数调用来创建一个Order。这种用法有一个好处,可以不用创建一个临时变量。
6.读取已经存在的行
find()中的有变量是指返回匹配条件的第一行,而:all返回匹配行的数组。
这句的意思是:返回符合name为dave,pay_type为po的所有记录。
这句可以直接在条件中使用变量,但是这样容易引起sql注入攻击。
为了防止sql注入攻击,我们可以使用动态的sql,如下:
或者如下:
还有排序和 limit
join的使用
find_by_sql()带上条件,传入一个数组,第一个元素是一个包含占位符的字符串。数组余下的部分或是一个散列或是替代值的列表。
7.给记录计数
8.动态查找器
这对大多数时侯是有效的,除非你有诸如tax_and_shipping的列名
reload()基本上是在unit test中使用,其他情况很少使用
9.更新已经存在的记录
除了save()外,active record还可以让你直接用单一的方法调用update_attribute()改变属性值并保存model对象。
10.save()与save!()方法
如果model对象是有效的并且能够保存的话,save()返回true。
如果你想在需要的地方保存model对象,又想所有的错误自动得到处理的话,你就直接使用save!()吧。这个方法如果碰到对象不能保存,就抛出一个RecordInvalid的异常。
11.删除记录
它有两个类方法delete()和delete_all(),都是在数据库级别上来操作。delete()方法使用一个id或一个id数组,来删除表中相应的记录。delete_all()删除匹配给定条件的记录行,如果没有条件就删除全部的记录。
12.表之间的关系
active record支持三种表之间的关系:
一对一,一对多,多对多。你可以通过在model中加入声明has_one,has_many,belongs_to,has_and_belongs_to_many
has_one声明一个给定的类是本身类。has_one声明和belongs_to一样定义同一个方法集,改变active record的默认行为。除了我们在belongs_to()看到的:class_name,:foreign_key,:conditions,还可以使用:dependent和: order。:dependent选项是指子表中的记录行不能独立于对应的父表记录行而单独存在。这就意味着如果你删除了父类的记录,而且你定义了:dependent=>true的话,active record将会自动删除子表中相关的记录行。 : order选项,是决定记录返回之前怎样排序。
has_many声明 has_many定义了一个属性,它就像子类集合一样。子表用belongs_to来表明它的父类。你要把子类作为一个数组存储,查询特别的子类,加入新的子类。
多对多的关系 多对多的关系是对称的关系,两个连接的表都互相使用has_and_belongs_to_many来声明它们之间的关系
1.当你创建一个ActiveRecord::Base的子类,实际上是包装一个数据库表。
2.active record假定表名是类的复数形式。如果类名包含多个以大写字母开头的单词,表名会假定以下划线分隔这些单词。
3.如果你不喜欢上面的做法,你可以这样:在配置文件中设置一个全局变量关闭它,在config目录下environment.rb文件中设置。
ActiveRecord::Base.pluralize_table_names=false
4.连接数据库
active record把数据库连接的概念抽象出来,有助于程序处理各种特殊数据库的底层细节.active record程序使用通用的调用,代理了一组数据库适配器的细节.
指定连接的一种方式是使用establish_connection()类方法。
举例来说,
ActiveRecord::Base.establish_connection( :adapter => "mysql", :host => "dbserver.com", :database => "railsdb", :username => "railsuser", :password => "railspw" )
第二种方式是:我们还可以在config/database.yml的配置文件中设置连接参数。
这样做的好处不仅在于连接信息和代码分离,而且有利于测试和部署。
5.创建新记录
我们可以通过调用Order.new()来创建一个对象,表示orders表中的行。然后填充各属性的值,对应表的各列。最后调用对象的save()方法存储到数据库。
active record的constructor可以有一个可选的块参数。如果用上的话,这个块会作为一个参数调用来创建一个Order。这种用法有一个好处,可以不用创建一个临时变量。
Order.new do |o| o.name = "Dave Thomas" # . . . o.save end
6.读取已经存在的行
an_order = Order.find(27) order_list = params[: order_ids] orders = Order.find(order_list) count = orders.size
find()中的有变量是指返回匹配条件的第一行,而:all返回匹配行的数组。
pos = Order.find(:all, :conditions => "name = 'dave' and pay_type = 'po'")
这句的意思是:返回符合name为dave,pay_type为po的所有记录。
pos = Order.find(:all,:conditions => "name = '#{name}' and pay_type = 'po'")
这句可以直接在条件中使用变量,但是这样容易引起sql注入攻击。
为了防止sql注入攻击,我们可以使用动态的sql,如下:
pos = Order.find(:all,:conditions => ["name = ? and pay_type = 'po'", name]) name = params[:name]
或者如下:
pay_type = params[:pay_type] name = params[:name] pos = Order.find(:all,:conditions => ["name = :name and pay_type = :pay_type", {:pay_type => pay_type, :name => name}])
还有排序和 limit
find(:all, : order => "id", :limit => page_size, : offset => page_num*page_size)
join的使用
find(:all, :conditions => "pr.title = 'Programming Ruby'", :joins => "as li inner join products as pr on li.product_id = pr.id")
find_by_sql()带上条件,传入一个数组,第一个元素是一个包含占位符的字符串。数组余下的部分或是一个散列或是替代值的列表。
7.给记录计数
c1 = Order.count c2 = Order.count(["name = ?", "Dave Thomas"]) c3 = LineItem.count_by_sql("select count(*) " + " from line_items, orders " + " where line_items.order_id = orders.id " + " and orders.name = 'Dave Thomas' ") puts "Dave has #{c3} line items in #{c2} orders (#{c1} orders in all)"
8.动态查找器
order = Order.find_by_name("Dave Thomas") orders = Order.find_all_by_name("Dave Thomas") order = Order.find_all_by_email(params['email']) user = User.find_by_name_and_password(name, pw)
这对大多数时侯是有效的,除非你有诸如tax_and_shipping的列名
reload()基本上是在unit test中使用,其他情况很少使用
9.更新已经存在的记录
除了save()外,active record还可以让你直接用单一的方法调用update_attribute()改变属性值并保存model对象。
order.update_attributes(:name => "Barney", :email => "barney@bedrock.com") order = Order.update(12, :name => "Barney", :email => "barney@bedrock.com") result = Product.update_all("price = 1.1*price", "title like '%Java%'")
10.save()与save!()方法
如果model对象是有效的并且能够保存的话,save()返回true。
如果你想在需要的地方保存model对象,又想所有的错误自动得到处理的话,你就直接使用save!()吧。这个方法如果碰到对象不能保存,就抛出一个RecordInvalid的异常。
begin order.save! rescue RecordInvalid => error # validation failed end
11.删除记录
它有两个类方法delete()和delete_all(),都是在数据库级别上来操作。delete()方法使用一个id或一个id数组,来删除表中相应的记录。delete_all()删除匹配给定条件的记录行,如果没有条件就删除全部的记录。
12.表之间的关系
active record支持三种表之间的关系:
一对一,一对多,多对多。你可以通过在model中加入声明has_one,has_many,belongs_to,has_and_belongs_to_many
has_one声明一个给定的类是本身类。has_one声明和belongs_to一样定义同一个方法集,改变active record的默认行为。除了我们在belongs_to()看到的:class_name,:foreign_key,:conditions,还可以使用:dependent和: order。:dependent选项是指子表中的记录行不能独立于对应的父表记录行而单独存在。这就意味着如果你删除了父类的记录,而且你定义了:dependent=>true的话,active record将会自动删除子表中相关的记录行。 : order选项,是决定记录返回之前怎样排序。
has_many声明 has_many定义了一个属性,它就像子类集合一样。子表用belongs_to来表明它的父类。你要把子类作为一个数组存储,查询特别的子类,加入新的子类。
多对多的关系 多对多的关系是对称的关系,两个连接的表都互相使用has_and_belongs_to_many来声明它们之间的关系
发表评论
-
安装vscode,git之后,点击‘初始化储存库’报错
2023-04-10 14:44 497安装vscode,git之后,点击‘初始化储存库’报错 -
一个未了的心结
2022-09-27 14:16 87我有一个未了的心结, 就是攻克癌症, 我后面不管做啥, 挣了钱 ... -
SpringBoot+SpringCloud面试题整理
2021-07-08 16:18 1593什么是SpringBoot? 1、用 ... -
自定义png,端午快乐
2021-06-14 10:00 0ppt+工具。 https://www.iloveimg.co ... -
在线ps软件
2021-06-08 19:02 1771在线ps软件https://www.uupoop.com/ -
万种滋味在心头
2021-05-28 12:30 0万种滋味在心头, 苦涩在自己心里浇灌, 我为什么一定要拧着搞呢 ... -
梦有预测作用
2021-05-12 19:51 682梦有预测作用。 此时此刻的一幕, 梦里梦到过。 -
一些感想
2021-03-10 12:13 4当前阶段对我来说无疑是一个低谷, 我现在经历的所有的困苦、沉闷 ... -
云南华坪女子高中誓词
2021-03-10 11:48 923“我生来就是高山而非溪流,我欲于群峰之巅俯视平庸的沟壑。 我生 ... -
基于 Avue 的可视化表单设计器
2021-03-04 16:05 1050本项目是一款基于 Avue 的表单设计器,拖拽式操作让你快速构 ... -
等级保护和分级保护
2021-03-04 17:20 552等级保护和分级保护 -
当Swagger遇上YApi,瞬间高大上了!(一个好用的接口管理工具)
2021-03-03 14:15 551当Swagger遇上YApi,瞬间高大上了!(一个好用的接口管 ... -
从0到N建立高性价比的大数据平台
2021-03-03 13:14 354从0到N建立高性价比的大数据平台 -
大数据平台 - 数据采集及治理
2021-03-03 12:04 386大数据平台 - 数据采集 ... -
pdf2ppt-格式互转神器
2021-03-01 10:26 2http://pdftoword.55.la/pdf-to-p ... -
SpringBlade微服务开发平台
2021-02-25 14:06 366SpringBlade微服务开发平台: https://git ... -
avue-doc数据大屏解决方案
2021-02-25 14:04 339avue-doc数据大屏解决方案 https://www.ka ... -
heroku部署指南
2021-02-04 23:17 265heroku提供的免费网站可以用于构建个人网站,非常适用于实验 ... -
使用 Apache Atlas 进行数据治理
2021-02-02 16:16 436使用 Apache Atlas 进行数据治理 -
树莓派上利用Tensorflow实现小车的自动驾驶
2021-02-01 15:59 354树莓派上利用Tensorflow实现小车的自动驾驶: http ...
相关推荐
该项目是采用Java语言实现的Ruby on Rails ActiveRecord设计理念的源码,总计包含46个文件,其中40个为Java源文件,其他包括Git忽略文件、许可证、Markdown文件、XML配置文件、数据库方言和驱动文件等。该设计旨在...
### Ruby on Rails 101:深入理解与实践 #### 引言 《Ruby on Rails 101》是一本介绍Ruby on Rails(简称RoR或ROR)的基础书籍,旨在为初学者提供一个全面而深入的学习框架。本书由Peter Marklund编写,包含了五天...
你将学习ActiveRecord,它是Rails提供的一个ORM(Object-Relational Mapping)工具,允许你用Ruby代码操作数据库。 在控制器(Controllers)部分,你将学习如何处理HTTP请求,组织应用逻辑,并将数据传递给视图...
《Ruby on Rails for Dummies》是一本专门为初学者设计的Ruby on Rails教程,它旨在帮助新手快速理解并掌握这个强大的Web开发框架。Ruby on Rails(简称Rails)是基于Ruby编程语言构建的一个开源Web应用程序框架,它...
Ruby on Rails:ActiveRecord模型操作教程.docx
4. **ActiveRecord**:这是Rails中的ORM(对象关系映射)库,它允许开发者用Ruby代码操作数据库,无需编写SQL。 5. **Scaffolding**:Rails的快速开发工具,能自动生成CRUD(创建、读取、更新、删除)操作的模型、...
《Ruby on Rails入门权威经典》是一本专门为初学者设计的指南,旨在帮助读者全面掌握Ruby on Rails这一强大的Web开发框架。Ruby on Rails(简称Rails)是基于Ruby编程语言的开源框架,以其“DRY(Don't Repeat ...
Ruby on Rails,简称Rails,是基于Ruby语言的一个开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本压缩包中的"Ruby on Rails入门经典代码"提供了新手学习...
Ruby On Rails 框架自它提出之日起就受到广泛关注,在“不要重复自己”,“约定优于配置”等思想的指导下,Rails 带给 Web 开发者的是极高的开发效率。 ActiveRecord 的灵活让你再也不用配置繁琐的 Hibernate 即可...
Ruby on Rails使用ActiveRecord,一个ORM(对象关系映射)库,使得与数据库交互变得简单。你可以通过定义类和方法来创建、更新、查询数据。 3. **视图(Views)**:视图负责呈现用户界面。它们通常由HTML、CSS和...
总的来说,Ruby on Rails实践涉及的知识点包括但不限于:Ruby语言基础、Rails框架结构、MVC模式、ActiveRecord、路由、测试驱动开发、插件和gem使用、以及部署策略。通过学习和实践,开发者能够快速构建功能丰富的...
Ruby on Rails,简称Rails,是基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,旨在使开发过程更加简洁高效。这个“ruby on rails 教程源码”很可能是为了辅助学习者深入理解Rails的...
Ruby on Rails 4 Tutorial 是一本深受开发者欢迎的书籍,它详细介绍了如何使用Ruby on Rails这一强大的Web开发框架。Ruby on Rails(简称Rails)是基于Ruby语言的开源框架,以其“约定优于配置”(Convention over ...
Ruby on Rails(简称Rails)是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程并提高效率。在这个“ruby on rails在线考试系统”中,我们可以探讨以下几...
Ruby on Rails,简称Rails,是一种基于Ruby编程语言的开源Web应用程序框架,以其“Convention over Configuration”(约定优于配置)和“Don't Repeat Yourself”(DRY,不要重复自己)的原则著称。Rails使得开发Web...
Ruby on Rails,简称Rails,是基于Ruby编程语言的一个开源Web应用程序框架,以其“约定优于配置”(Convention over Configuration)的设计哲学和“模型-视图-控制器”(MVC)架构模式,深受开发者喜爱。这套书全集...
Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用框架,它遵循敏捷开发原则,致力于简化Web开发过程。Rails的核心理念是“Convention over Configuration”(约定优于配置),这意味着开发者可以减少大量...
Ruby on Rails(简称Rails)是一种基于Ruby编程语言的开源Web应用程序框架,专为敏捷开发而设计,强调简洁的代码和“约定优于配置”的原则。它主要用于构建数据驱动的Web应用,借助于MVC(Model-View-Controller)...
在Ruby on Rails框架中,开发人员经常选择使用关系型数据库如SQLite、PostgreSQL或MySQL来存储数据。然而,随着NoSQL数据库的兴起,MongoDB因其灵活性和非结构化数据处理能力,也成为了许多Web应用程序的选择。本文...