`
hanqingwxf2008
  • 浏览: 51656 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

运用ActiveRecord

阅读更多

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 列出上一级

分享到:
评论

相关推荐

    ActiveRecord简单实例_activerecord.zip

    本实例将深入探讨ActiveRecord的基本用法,帮助理解如何在实际开发中有效地运用这个强大的工具。 首先,让我们了解ActiveRecord的核心概念:ORM(Object-Relational Mapping)。ORM允许开发者使用面向对象的编程...

    NHibernate中文教程+activerecord

    **NHibernate 中文教程** NHibernate 是一个流行的开源对象关系映射(ORM)框架,用于.NET平台。ORM框架简化了数据库操作,通过将数据库表...通过学习和实践,您将能熟练地在.NET项目中运用ORM技术,提升开发效率。

    castle ActiveRecord 源代码

    《Castle ActiveRecord源代码解析——基于NHibernate的C#封装实践》 Castle ActiveRecord是.NET框架下的一款优秀的ORM...在实际项目中,结合C#的特性,灵活运用Castle ActiveRecord,可以打造出高效、稳定的业务系统。

    ASP.NET源码——ActiveRecord简单实例.zip

    通过这个简单的实例,你可以了解ASP.NET如何与ActiveRecord模式相结合,以及如何在实践中运用这些技术。通过学习和分析代码,你将能更好地理解ASP.NET的Web开发流程,同时掌握ORM在.NET环境下的应用。

    Ruby-actsasfollower允许任何ActiveRecord模型关注其他模型

    Ruby-acts_as_follower 是一个流行的 Ruby on Rails 框架插件,它为 ActiveRecord 模型提供了关注(follow)和取消关注(unfollow)的...通过深入理解和灵活运用这个插件,你可以构建出具有强大关注功能的现代Web应用。

    jfinal运行所需jar包

    2. **数据库操作组件**:JFinal内置了对多种数据库的支持,如MyBatis或JFinal的ActiveRecord插件,方便进行ORM(对象关系映射)操作。 3. **模板引擎**:JFinal支持FreeMarker和Velocity等模板引擎,用于生成动态...

    cakephp_bate.zip_The Front

    CakePHP 是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该项目主要目标是提供一个可以让各种层次的PHP开发人员快速地开发出健壮的Web应用,而 又...

    CakePHP php框架 v5.0.7

    CakePHP 是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该项目主要目标是提供一个可以让各种层次的PHP开发人员快速地开发出健壮的Web应用,而 又...

    CakePHP php框架 v3.8.5

    CakePHP 是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该项目主要目标是提供一个可以让各种层次的PHP开发人员快速地开发出健壮的Web应用,而 又...

    CakePHP php框架 v3.7.8.zip

    CakePHP 是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该项目主要目标是提供一个可以让各种层次的PHP开发人员快速地开发出健壮的Web应用,而 又...

    CakePHP php框架 v3.7.0 RC3.zip

    CakePHP 是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该项目主要目标是提供一个可以让各种层次的PHP开发人员快速地开发出健壮的Web应用,而 又...

    CakePHP php框架 v3.7.0 beta1.zip

    CakePHP 是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该项目主要目标是提供一个可以让各种层次的PHP开发人员快速地开发出健壮的Web应用,而 又...

    SubSonic-3.0源码

    总的来说,SubSonic 3.0源码的学习将让你深入了解数据库访问的最佳实践,包括设计模式的运用、代码生成的自动化以及Linq查询的强大。通过对源码的分析,开发者不仅可以提升数据库操作的技能,还能学习到软件设计的...

    Web开发敏捷之道第三版(中文版).pdf

    ### Web开发敏捷之道第三版(中文版) #### 知识点概述 ...通过实践示例项目Depot的应用程序,读者可以循序渐进地掌握Rails框架的核心概念和技术,并学会如何运用敏捷开发的方法来提高开发效率和质量。

    SubSonic的详细使用和中文指南

    SubSonic是一个开源的.NET...通过理解和熟练运用SubSonic,你可以提高开发效率,同时降低出错的可能性。文档"SubSonic的使用.doc"和"subsonic指南.pdf"将提供更详尽的教程和实例,深入讲解SubSonic的各种特性和用法。

    cakephp_v2.1.4

    CakePHP是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该项目主要目标是提供一个可以让各种层次的PHP开发人员快速地开发出健壮的Web应用,而 又...

    Agile Web Development with Rails (PDF)

    本书不仅覆盖了Rails的基本概念和技术细节,还深入介绍了如何在实际项目中运用敏捷开发方法论,以提升开发效率和产品质量。 ### 核心知识点: #### 1. Rails与敏捷开发 Rails作为一款基于Ruby语言的Web应用框架,...

    yii1.1中文手册

    这个中文手册会涵盖这些内容,并且用中文进行解释,使得中文使用者能够更轻松地理解和运用。 1. **MVC模式**:在Yii中,MVC模式用于分离业务逻辑、数据和用户界面。模型(Model)处理数据和业务逻辑,视图(View)...

    rails-playlists-源码.rar

    通过对"rails-playlists-源码"的深入学习,开发者不仅可以理解Rails的基础知识,还能掌握如何在实际项目中运用这些知识,构建出功能完备且易于维护的Web应用。阅读源码是提升编程技能的绝佳方式,尤其是对于想要深入...

Global site tag (gtag.js) - Google Analytics