- 浏览: 51675 次
- 性别:
- 来自: 青岛
文章分类
最新评论
01.创建新实例
#01.1
a=Article.new
a.new_record? # =>true
#01.2代码块
a=Artile.new do |art|
art.title = "世界杯"
art.state_id = 3
end
#01.3创建并保存(会保存数据库中)
a=Artilre.create(:title=>"世界杯报道团",:state_id=>1)
-------------------------
02.读取ActiveRecord对象
Article.find(1) #读取id为1的对象
Article.find(1,2) #读取id为1和2的对象
Article.find(:all) #读取全部对象
Article.find(:first) #读取第一条
Article.find(:last) #读取最后一条
Product.first(:readonly=>true) #只读查询
Article.find(:all,:conditions=>["title like ?","%#{a}%"])
Article.find(:all,:conditions=>["title like :title",:title=>"%#{a}%"])
Article.find(:all,:conditions=>["title like :title and price>:price",:title=>"%#{a}%",:prcie=>3])
-------------------------
03.把条件设置数组
>> conditions = [] #定义一个数组
=> []
>> conditions << ["title like ?", 'a'] #把一个条件加到数组
=> [["title like ?", "a"]]
>> conditions << ["title like ?", 'a'] if params[:title].present? #加一个判断 非空时加入到数组
-------------------------
04.include附加查询(减少N+1次查询)
LineItem.all :conditions => "products.title => 'a'", :include => :product
-------------------------
05.jions附加查询
LineItem.all :conditions => "products.title like '%a%'", :joins => :product
-------------------------
06.获取字段统计信息
Product.average(:price) #平均
Product.maximum(:price) #最大
Product.minimum(:price) #最小
Product.sum(:price) #球和
Product.count() #数量
-------------------------
07.重新载入
record.reload(:lock=>true)
-------------------------
08.动态查询
Article.find_by_id(1) #查询ID=1的内容
Article.find_all_by_channel_id(1).collect(&:state_id) #找到Article对象,channel_id是1的所有对象,然后取所有对象的state字段,组成数组.
Article.find_all_by_channel_id(1).map(&:state_id) #同上 array.map {|item| item.state_id } → an_array
Article.find_all_by_channel_id_and_id("1","1") #查询频道=1 并且 ID=1的内容
Article.find_by_sql("select * from article") #直接运行sql
Article.find_by_title_and_price("测试",78.9) #只查第一条first 结果:title和price
Article.find_all_by_title_and_price("测试",78.9) #返回数组 结果:title和price
Article.find_or_create_by_title("hahahaha") #查询并保存
Article.find_or_initialize_by_title("aoiokkok") #查询,如果没有初始化
-------------------------
09.查询缓存
-------------------------
10.查看日志
tail -f log/development.log
-------------------------
11.表关系
LineItem(model)
belongs_to:product
-------------------------
l = LineItem.first
l.product #相当 SELECT * FROM "products" WHERE ("products"."id" = 1)
l.product(ture) #重新读取数据库,默认false读取内存
-------------------------
12.通过关系进行赋值
p=Product.last
l.product = p
l
-------------------------
13.多表操作(同时保存2个表数据)
l.num="15" #LineItem的数据
l.build_product(:title=>"a",:price=>"3") #product的数据
l.save
-------------------------
14.只一个表储存,不需要svae
l.create_product(:title=>"a",:price=>"3")
-------------------------
15.杂项
order(model)
has_many:line_items
order(model)
has_one:其他
dependent=>:destroy #订单删除同时删除订单项,可以调用before_destroy之类的,会删除孙子表
dependent=>:delete #订单删除同时删除订单项,但不调用before_destroy之类的 (has_many是:delete_all)
dependent=>:nullify #订单删除,不删除删除订单项,但把订单项目里到ID为空:
o=Order.first
o.line_items << LineItem.new #新加入项目 到 订单项目里 单条 直接保存.save
>> o=Order.first
=> #<....>
>> o.line_items << LineItem.new(:product_id=>"2",:quantity=>"12",:total_price=>"1368")
=> [#<.....>]
>> o.save
=> true
o.line_items.push(LineItem.new) #多条
o.line_items.replace(LineItem.find(1),LineItem.find(2)...) #把多条内容替换当前单里到所有
o.line_items.delete(LineItem.all) #删除关系多条 destroy delete_all destroy_all
o.line_items.clear #清除两表关系
o.line_items.find(line_item1,...) #查找..
o.line_items.count(line_item1,...) #计数
>> l = o.line_items.count
=> 3
>> o.line_items.empty? #是否为空
=> false
自引用(例如无限级部门)
class Department << ActiveRecord::Base
belongs_to :parent,:class_name=>"Department" #可省略部分,:foreign_key=>"parent_id"
has_many :children,:class_name=>"Department",:foreign_key=>"parent_id"
department.children 列出下一级
department.parent 列出上一级
发表评论
-
client_side_validations
2011-12-27 16:31 1147client_side_validations是一个 ... -
alias, alias_method和alias_method_chain
2011-12-26 16:34 875本文介绍Ruby里的几个关键字。 1. alias ... -
Ubuntu上Apache+Passenger部署实践
2011-12-07 11:39 1369http://hi.baidu.com/hackerbase/ ... -
用vim 开发rails
2011-12-05 19:11 59之前一直使用netbeans开发rails,看到同事们 都 ... -
gem 降级
2011-10-09 17:21 1967gem uninstall rubygems- ... -
render vs redirect
2011-08-15 15:53 982render和redirect的区别在于: rende ... -
ruby 正则匹配非站内链接
2011-08-01 16:48 960def has_href_not_XXX?(content ... -
转载一篇比较详细介绍rails routes的文章
2011-05-23 13:55 1571REST, Resources, and Rails ... -
ruby 中的 方法调用作用域
2011-04-27 16:09 1330因此private和protected的在ruby当前和Jav ... -
rails 学习小结
2011-04-25 17:25 1028具名域 和 匿名域 ,rails无法处 ... -
find ---:readonly
2011-04-25 17:02 723如果:readonly 被设为 true 则不能将 find ... -
主键与ID
2011-04-25 16:43 877默认的主键为ID,我们可以如下来修改主键, ... -
rails Boolean型属性
2011-04-25 16:28 1526ruby中 对真值的定义 非常简单 除了nil和fals ... -
REST
2011-04-13 15:58 715http://hi.baidu.com/magiclin/bl ... -
ruby & rails 安装
2011-04-09 00:11 781ry1.8.7安装: 在终端执行: ... -
刚学的一个activeRecord语句
2011-04-08 16:39 858学习rails两个礼拜了,加油加油 Person.find( ... -
将find出来的对象数组 组装成 字符串数组
2011-04-08 16:29 879user=User.find(:all,:select=& ... -
Rails Form helpers
2011-03-31 21:23 1340文章转自:http://yuan.iteye. ...
相关推荐
本实例将深入探讨ActiveRecord的基本用法,帮助理解如何在实际开发中有效地运用这个强大的工具。 首先,让我们了解ActiveRecord的核心概念:ORM(Object-Relational Mapping)。ORM允许开发者使用面向对象的编程...
**NHibernate 中文教程** NHibernate 是一个流行的开源对象关系映射(ORM)框架,用于.NET平台。ORM框架简化了数据库操作,通过将数据库表...通过学习和实践,您将能熟练地在.NET项目中运用ORM技术,提升开发效率。
《Castle ActiveRecord源代码解析——基于NHibernate的C#封装实践》 Castle ActiveRecord是.NET框架下的一款优秀的ORM...在实际项目中,结合C#的特性,灵活运用Castle ActiveRecord,可以打造出高效、稳定的业务系统。
通过这个简单的实例,你可以了解ASP.NET如何与ActiveRecord模式相结合,以及如何在实践中运用这些技术。通过学习和分析代码,你将能更好地理解ASP.NET的Web开发流程,同时掌握ORM在.NET环境下的应用。
Ruby-acts_as_follower 是一个流行的 Ruby on Rails 框架插件,它为 ActiveRecord 模型提供了关注(follow)和取消关注(unfollow)的...通过深入理解和灵活运用这个插件,你可以构建出具有强大关注功能的现代Web应用。
2. **数据库操作组件**:JFinal内置了对多种数据库的支持,如MyBatis或JFinal的ActiveRecord插件,方便进行ORM(对象关系映射)操作。 3. **模板引擎**:JFinal支持FreeMarker和Velocity等模板引擎,用于生成动态...
CakePHP 是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该项目主要目标是提供一个可以让各种层次的PHP开发人员快速地开发出健壮的Web应用,而 又...
CakePHP 是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该项目主要目标是提供一个可以让各种层次的PHP开发人员快速地开发出健壮的Web应用,而 又...
CakePHP 是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该项目主要目标是提供一个可以让各种层次的PHP开发人员快速地开发出健壮的Web应用,而 又...
CakePHP 是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该项目主要目标是提供一个可以让各种层次的PHP开发人员快速地开发出健壮的Web应用,而 又...
CakePHP 是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该项目主要目标是提供一个可以让各种层次的PHP开发人员快速地开发出健壮的Web应用,而 又...
CakePHP 是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该项目主要目标是提供一个可以让各种层次的PHP开发人员快速地开发出健壮的Web应用,而 又...
总的来说,SubSonic 3.0源码的学习将让你深入了解数据库访问的最佳实践,包括设计模式的运用、代码生成的自动化以及Linq查询的强大。通过对源码的分析,开发者不仅可以提升数据库操作的技能,还能学习到软件设计的...
### Web开发敏捷之道第三版(中文版) #### 知识点概述 ...通过实践示例项目Depot的应用程序,读者可以循序渐进地掌握Rails框架的核心概念和技术,并学会如何运用敏捷开发的方法来提高开发效率和质量。
SubSonic是一个开源的.NET...通过理解和熟练运用SubSonic,你可以提高开发效率,同时降低出错的可能性。文档"SubSonic的使用.doc"和"subsonic指南.pdf"将提供更详尽的教程和实例,深入讲解SubSonic的各种特性和用法。
CakePHP是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该项目主要目标是提供一个可以让各种层次的PHP开发人员快速地开发出健壮的Web应用,而 又...
本书不仅覆盖了Rails的基本概念和技术细节,还深入介绍了如何在实际项目中运用敏捷开发方法论,以提升开发效率和产品质量。 ### 核心知识点: #### 1. Rails与敏捷开发 Rails作为一款基于Ruby语言的Web应用框架,...
这个中文手册会涵盖这些内容,并且用中文进行解释,使得中文使用者能够更轻松地理解和运用。 1. **MVC模式**:在Yii中,MVC模式用于分离业务逻辑、数据和用户界面。模型(Model)处理数据和业务逻辑,视图(View)...
通过对"rails-playlists-源码"的深入学习,开发者不仅可以理解Rails的基础知识,还能掌握如何在实际项目中运用这些知识,构建出功能完备且易于维护的Web应用。阅读源码是提升编程技能的绝佳方式,尤其是对于想要深入...