`
minwh
  • 浏览: 12364 次
社区版块
存档分类
最新评论

ROR学习——Active Record

    博客分类:
  • ROR
阅读更多

乐观锁默认是打开的,当表中有lock_version字段时对该表使用乐观锁控制。
使用ActiveRecord::Base.lock_optimistically = false关闭乐观锁。

有两种删除操作delete和destory。区别在于delete不会执行回调和验证函数,destory则会调用。通常建议使用destory,以保证数据的一致性。

has_one关联会自动更新,belongs_to则不会。当赋一个新的对象给has_one关联时,原有对象的外键被置为null。自动更新时即使失败也不会抛出异常,所以提倡使用a.save!  b.a = a的形式更新数据库。

ruby 代码
  1. class User < ActiveRecord::Base   
  2. has_and_belongs_to_many :articles  
  3. def read_article(article)   
  4. articles.push_with_attributes(article, :read_at => Time.now)   
  5. end  
  6. # ...   
  7. end  
ruby 代码
  1. #使用include来预加载关联对象   
  2. for post in Post.find(:all:conditions => "posts.title like '%ruby%'",   
  3. :include => [:author:comments])   
  4. # ...   
  5. end  

 

计数器counter,在父表中添加***_count int default 0字段,并在belongs_to中指定:counter_cache = true。但是在手动添加子表中的数据时counter不会自动更新。

ruby 代码
  1. class LineItem < ActiveRecord::Base      
  2. true     
  3. belongs_to :product:counter_cache =>      
  4. end     
  5.   
  6. #counter不会自动更新,需要调用:refresh   
  7. product = Product.create(:title => "Programming Ruby",   
  8. :date_available => Time.now)   
  9. line_item = LineItem.new  
  10. line_item.product = product   
  11. line_item.save   
  12. "In memory size = #{product.line_items.size}"  
  13. puts   
  14. puts "Refreshed size = #{product.line_items(:refresh).size}"  
  15. #This outputs   
  16. #in memory size = 0   
  17. #Refreshed size = 1   
  18.   
  19. #正确写法   
  20. product = Product.create(:title => "Programming Ruby",   
  21. :date_available => Time.now)   
  22. product.line_items.create   
  23. puts   
  24. "In memory size = #{product.line_items.size}"  
  25. puts "Refreshed size = #{product.line_items(:refresh).size}"  
分享到:
评论

相关推荐

    Pro Active Record. Databases with Ruby and Rails

    《Pro Active Record: Databases with Ruby and Rails》不仅为初学者提供了一个全面的学习框架,也为有一定基础的开发者提供了深入的技术指导。通过对本书的学习,开发者可以更加熟练地掌握Active Record的核心技术...

    ROR绿色最新环境(2013/3/10)

    Active Record version 3.2.12 Action Pack version 3.2.12 Active Resource version 3.2.12 Action Mailer version 3.2.12 Active Support version 3.2.12 Middleware ActionDispatch::Static Rack::Lock # ...

    swift-SwiftCop表单验证工具思路源自ROR的ActiveRecord

    SwiftCop 是一个灵感来源于 Ruby on Rails (ROR) 中的 Active Record 的表单验证工具,专为 Swift 开发者设计。在 ROR 中,Active Record 提供了一种强大的方式来处理模型的数据验证,使得开发者可以方便地定义和...

    初探ROR

    2. Active Record查询接口:提供了丰富的查询语法,如链式查询和条件查询。 3. Testing:Rails内置测试框架,包括Unit Tests、Integration Tests和Functional Tests,确保代码质量。 4. Asset Pipeline:管理并优化...

    神经网络ror resenet模型

    在Ror块中,不仅有常规的残差学习,还有更高层次的残差学习,即残差学习的残差。这种多层次的结构使得网络能更细致地理解特征,并且有助于减少过拟合,提高模型的泛化能力。 **CIFAR-10和CIFAR-100数据集** CIFAR-...

    RoR性能优化经验谈

    RoR(Ruby on Rails)是一种流行的开源Web开发框架,以其高效和简洁的代码著称。然而,随着网站规模的增长,性能优化成为...通过学习和实践这些经验,开发者可以更好地应对RoR性能挑战,创建出更健壮、高效的Web应用。

    Pro ActiveRecord Databases

    Apress Pro ActiveRecord Databases with Ruby and Rails &lt;br&gt;Active Record has primarily been covered as a subsection, or maybe as a chapter or two, within a larger scoped book generally about the ...

    ror培训第4天 -model1

    在本篇"ror培训第4天 -model1"中,我们聚焦于Model中的Active Record,这是一个强大的对象关系映射(ORM)工具,使得开发者可以使用Ruby语言来操作数据库,而无需直接编写SQL语句。 Active Record的迁移...

    ROR 学习笔记系列一 Windows XP下环境安装配置(2)

    在本篇ROR(Ruby on Rails)学习笔记中,我们将深入探讨如何在Windows XP操作系统上进行环境的安装和配置。Ruby on Rails是一个流行的开源Web应用框架,它基于Ruby编程语言,以其“DRY”(Don't Repeat Yourself)...

    ror中文资料

    在提供的压缩包文件中,我们可以看到"Ruby语言中文教程",这暗示了资源可能包含了关于Ruby语言的基础知识和进阶内容,对于学习RoR至关重要。Ruby是RoR的基础,理解其语法和特性对于掌握RoR框架极其关键。 **Ruby...

    RoR选题方向—源代码

    在这个选题方向中,我们主要探讨的是与RoR相关的源代码分析和学习。源代码是理解任何编程语言或框架工作原理的关键,对于RoR来说也不例外。 在深入源代码之前,我们需要了解RoR的一些核心概念。如ActiveRecord,它...

    ror

    NULL 博文链接:https://xuxiangpan888.iteye.com/blog/266696

    ror实例

    "ror实例"可能指的是在学习或实践中,通过创建一个具体的Rails应用程序来理解和掌握RoR的工作原理和最佳实践。 在Ruby on Rails中,重要知识点包括: 1. **Gemfile与Gemfile.lock**:项目中的Gemfile用于指定项目...

    ROR安装必备所有架包

    在Ruby on Rails(ROR)开发环境中,安装和配置正确的依赖包是至关重要的。这个压缩包包含了一系列用于ROR框架的基础组件,但不包括Ruby本身。让我们深入了解一下这些包的作用和重要性。 首先,`actionpack`是Rails...

    RoRBlog 基于RoR的博客系统

    基于RoR的博客系统,代码风格简单清晰,前后太完善,适合初学者。

    机遇ROR 的图书管理系统

    《机遇ROR的图书管理系统》是一份以Ruby on Rails(简称ROR)技术为核心,旨在构建高效、便捷的图书管理解决方案的学习资料。Ruby on Rails,是基于Ruby编程语言的开源Web应用框架,它遵循MVC(Model-View-...

    learnRoR:艰难地学习RoR

    【标题】"learnRoR:艰难地学习RoR"揭示了这个项目是关于学习Ruby on Rails(RoR)框架的个人历程。RoR,或Rails,是由David Heinemeier Hansson开发的一个开源Web应用程序框架,它完全用Ruby编程语言编写。Ruby是一...

    RoR中文解决方案(很不错哦)

    标题中的“RoR中文解决方案”指的是Ruby on Rails(简称RoR)的一个针对中文环境的解决方案。Ruby on Rails是一个开源的Web应用程序框架,它遵循...对于学习和使用RoR的中文开发者来说,这是一个非常实用的资源集合。

    RubyOnRails做的博客

    2. Active Record:RoR的Active Record是ORM(对象关系映射)库,它使得数据库操作变得简单。在这个博客中,Active Record被用来定义数据模型,并提供了与数据库交互的方法,如CRUD(创建、读取、更新和删除)操作。...

Global site tag (gtag.js) - Google Analytics