- 浏览: 849324 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1095)
- 大数据存储 (76)
- 编程语言(Java&Scala) (46)
- 大数据建模 (33)
- 开发与管理 (8)
- 操作系统 (13)
- 实用代码集合 (25)
- 新技术研究 (15)
- 前端技术研究 (22)
- 物联网 (18)
- 兴趣探索 (15)
- 编程语言(Groovy&Grails) (92)
- 编程语言(RubyOnRails) (153)
- 个人收藏 (152)
- 技术管理 (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 344安装vscode,git之后,点击‘初始化储存库’报错 -
一个未了的心结
2022-09-27 14:16 87我有一个未了的心结, 就是攻克癌症, 我后面不管做啥, 挣了钱 ... -
SpringBoot+SpringCloud面试题整理
2021-07-08 16:18 1473什么是SpringBoot? 1、用 ... -
自定义png,端午快乐
2021-06-14 10:00 0ppt+工具。 https://www.iloveimg.co ... -
在线ps软件
2021-06-08 19:02 1715在线ps软件https://www.uupoop.com/ -
万种滋味在心头
2021-05-28 12:30 0万种滋味在心头, 苦涩在自己心里浇灌, 我为什么一定要拧着搞呢 ... -
梦有预测作用
2021-05-12 19:51 652梦有预测作用。 此时此刻的一幕, 梦里梦到过。 -
一些感想
2021-03-10 12:13 4当前阶段对我来说无疑是一个低谷, 我现在经历的所有的困苦、沉闷 ... -
云南华坪女子高中誓词
2021-03-10 11:48 849“我生来就是高山而非溪流,我欲于群峰之巅俯视平庸的沟壑。 我生 ... -
基于 Avue 的可视化表单设计器
2021-03-04 16:05 985本项目是一款基于 Avue 的表单设计器,拖拽式操作让你快速构 ... -
等级保护和分级保护
2021-03-04 17:20 514等级保护和分级保护 -
当Swagger遇上YApi,瞬间高大上了!(一个好用的接口管理工具)
2021-03-03 14:15 503当Swagger遇上YApi,瞬间高大上了!(一个好用的接口管 ... -
从0到N建立高性价比的大数据平台
2021-03-03 13:14 309从0到N建立高性价比的大数据平台 -
大数据平台 - 数据采集及治理
2021-03-03 12:04 350大数据平台 - 数据采集 ... -
pdf2ppt-格式互转神器
2021-03-01 10:26 2http://pdftoword.55.la/pdf-to-p ... -
SpringBlade微服务开发平台
2021-02-25 14:06 325SpringBlade微服务开发平台: https://git ... -
avue-doc数据大屏解决方案
2021-02-25 14:04 307avue-doc数据大屏解决方案 https://www.ka ... -
heroku部署指南
2021-02-04 23:17 239heroku提供的免费网站可以用于构建个人网站,非常适用于实验 ... -
使用 Apache Atlas 进行数据治理
2021-02-02 16:16 396使用 Apache Atlas 进行数据治理 -
树莓派上利用Tensorflow实现小车的自动驾驶
2021-02-01 15:59 306树莓派上利用Tensorflow实现小车的自动驾驶: http ...
相关推荐
Ruby On Rails 框架自它提出之日起就受到广泛关注,在“不要重复自己”,“约定优于配置”等思想的指导下,Rails 带给 Web 开发者的是极高的开发效率。 ActiveRecord 的灵活让你再也不用配置繁琐的 Hibernate 即可...
本章详细介绍Rails数据持久化技术ActiveRecord的使用,包括ORM与ActiveRecord的简介、建立数据表的映射、执行动态查询、插入数据、删除数据、表之间的关联,以及数据有效性验证等。 第11章 MVC的控制器层。本章...
Ruby on Rails Guides_ A Guide to Active Record Associations.pdf
主要介绍了Ruby on Rails中的ActiveRecord编程指南,作者对编写ActiveRecord的通用习惯给出了建议,需要的朋友可以参考下
《Ruby.on.Rails.Web开发之旅》,作者:【德】Patrick Lenz,翻译:王德民、刘昕、裴立秋,出版社:人民邮电出版社,ISBN:9787115188526,PDF 格式,大小 144 Mb,被压缩为 3 部分,本资源是第二部分;第一部分下载...
《Ruby.on.Rails.Web开发之旅》,作者:【德】Patrick Lenz,翻译:王德民、刘昕、裴立秋,出版社:人民邮电出版社,ISBN:9787115188526,PDF 格式,大小 144 Mb,被压缩为 3 部分,本资源是第一部分;第二部分下载...
《Ruby.on.Rails.Web开发之旅》,作者:【德】Patrick Lenz,翻译:王德民、刘昕、裴立秋,出版社:人民邮电出版社,ISBN:9787115188526,PDF 格式,大小 144 Mb,被压缩为 3 部分,本资源是第三部分;第一部分下载...
Ancestry Ancestry是一个宝石,它允许将Ruby on Rails ActiveRecord模型的记录组织为树结构(或层次结构)。 它使用物化路径模式使用单个数据库列。 它公开了一个祖先祖先是一颗宝石,它可以将Ruby on Rails ...
Ruby on Rails 编程常常会将您宠坏。这一不断发展的框架会让您从其他框架的沉闷乏味中解脱出来。您可以用习以为常的几行代码片断表达自己的意图。而且还可以使用 ActiveRecord。 对于我这样的一个老 Java? 程序员而...
Ruby on Rails 是无可非议的Ruby 杀手锏应用程序。它提供很多保障将Ruby 从其日文 本土的隐晦中解脱出来。没有其他任何一门编程语言可以以这样一个简单的Web应用程 序框架而自豪,该框架也吸取了大部分该语言开发者...
Ruby on Rails应用程序安全资源的精选列表 目录 资源 官方资源 实验室-脆弱的应用程序 最佳实践 反模式 附加阅读 报告错误 宝石 身份验证和OAuth Devise-带Warden的Rails的灵活身份验证解决方案 Devise Security...
Four Days On Rails. Ruby on rails入门教程(英文版)。
Ruby on Rails 的轻量级演示器实现。 要求 Ruby on Rails >= 4 安装 将此添加到您的 Gemfile 中: gem 'actionpresenter' , '0.2.0' 在项目中创建app/presenters文件夹,该文件夹将保存演示者文件。 用法 假设...
祖先祖先是一种宝石,它允许将Ruby on Rails ActiveRecord模型的记录组织为树结构(或层次结构)。 它采用了物化路径模式,并公开了所有标准的树结构关系(祖先,父级,根级,子级,同级,后代),从而允许在单个SQL...
#Feevale 的 Ruby on Rails 课程##Ruby历史安装语言(面向对象、块、模块和语法) 宝石交互式控制台 (irb) 元编程##Rails - 概述目前网络开发配置约定MVC ##Rails - 模型(ActiveRecord + ActiveModel) 迁移验证...
在 Heroku 上使用 Puma Web 服务器的 Ruby on Rails 使用部署在Puma Web 服务器的示例 Ruby on Rails 应用程序。 2015 年 1 月 23 日,Heroku 宣布 Puma 为推荐的 Ruby Web 服务器。 来自: Heroku 现在推荐使用 ...
该存储库包含用于各种Ruby和Rails集成: ActiveModel与ActiveRecord和Mongoid适配器的集成 基于存储库模式的Ruby对象持久层 基于可枚举的搜索结果包装器 ActiveRecord ::基于关系的包装器,用于将搜索结果作为记录...