`

ActiveRecord(一)--基础

阅读更多

   这一篇主要讲:如何连接到数据库,如何映射表,以及如何处理数据。

  ActiveRecord采用了标准的对象-关系映射(ORM)层,表映射到类,记录映射到对象,字段映射到对象的属性。

   1,表和类

         ActiveRecord会认为表名应该是类名的复数形式,如果类名包含多个大写字母,表名中就应该用下划线分割多个单词,一些特殊的复数形式也会被自动处理。

      (DHH的理念:类名应该是单数形式,表名应该是复数形式。为什么这样呢?因为听起来跟符合人命的习惯。我们的目标是创建一种领域语言,让它成为编程语言与口头语言时间的桥梁...如果遵循标准的命名约定,可以省掉大部分的配置。)

    如果不喜欢这种方式可以自己设定:

    (1)

 class user < ActiveRecord:Base
     set_table_name "user"    #not "users" 
  end

 (2)

 

class User < ActiveRecord:Base
  self.table_name = "user" 
end

 (3)此外,也可以在配置文件中配置

 

config.active_record.pluralize_table_names = true|false

   如果为false,表名与模型类名一致,而不是后者的复数形式。

 

2,字段和属性

      属性在哪里?数据库结构可以看作模型定义的一部分。

     优点:体现了DRY(Don't Repeat Yoursef)原则,如果模型添加一个属性,只需要新建一个数据迁移任务,然后重新加载应用程序,不需要对代码做任何修改。

 

     注意:如果要查询一个boolean型字段的状态,就必须在字段名的后面加问号。

3,主键与Id

    在ActiveRecord中,主键字段在对象中的属性名称永远都是id。

   primary_key= 声明只是用于指定数据库表中的主键字段。

4, 连接数据库

   修改config/database.yml就可以了。

如果有特殊需要,可以用establist_connection方法。

ActiveRecord::Base.establist_connection(

   :adapter => "mysql",

   :host => "",

   :database  => "",
   :username => "",
   :password => ""

)

 也可以对某个model用establish_connection

class Customer < ActiveRecord::Base
   establist_connection(

       :adapter => "mysql",
      :host => "",
      :database  => "",
      :username => "",
      :password => ""
   )
end

 5,curd

   (1)新增记录

 

user = User.new
user.name = "wade"
user.save

  或

user  = User.create(:name => "wade")

      save与create的区别?

      save和new()搭配使用,create()则同时完成“实例化模型对象”和“将模型对象存入数据库”的操作。

 (2)读取现有记录

      ActiveRecord如何操作数据库?

     动态生成sql语句,底层执行查询操作,把查询结果包装成存放对象的数组

 (3)更新现有记录

 

order = Order.find(123)
order.name = "wade"
order.save

 

#更新某几个特定字段的值
user = User.find(123)
user.update_attribute(:name,"mengwade')

 

#用于将来自表单的数据更新到一条已有的数据库记录
user = User.find(123)
user.update_attrubutes(:name => "mengwade",
                                       :email => "abc@123.com")

 

#“读取数据”与“更新数据”合二为一
user = User.update(123,:name => "mengwade",
                                       :email => "abc@123.com")

 

#适用于批量更新,可以指定set和where字句
result = Product.update_all("price=1.1*price","title like '%ruby%'")

 (4)删除记录

 

product.delet(12)

product.delete([12,13])

 

Product.delete_all(["price > ?",1])
 
product = Product.find_by_title("ruby")
product.destroy

 

Product.destroy(12)
Product.destroy([12,13])
 
Product.destroy_all(["price > ?",100])

 d elete()和destroy()的区别?

 delete()方法绕过了ActiveRecord的回调和验证,而destroy()可以确保进行模型类中定义的业务规则检查,以保证数据的完整性

5
0
分享到:
评论

相关推荐

    Castle.ActiveRecord (.NET FrameWork 2.0)

    如果你想使用Castle.ActiveRecord,但又不想使用.NET Framework 3.0/3.5/4.0或更高版本,那么这个就是你所需要的,For .NET FrameWork 2.0,我整理了好久,自己从官方一个资源库找到并整理好的一套。 -------------...

    Pro ActiveRecord Databases with Ruby and Rails.pdf

    《Pro ActiveRecord Databases with Ruby and Rails》是一本针对中级到高级Ruby on Rails开发者的书籍,它不仅涵盖了ActiveRecord的基础知识,更重要的是提供了大量的高级技巧和最佳实践。对于希望深入了解...

    castle ActiveRecord 源代码

    在深入理解Castle ActiveRecord之前,我们首先要对NHibernate有一个基础的认识。NHibernate是一款强大的开源ORM框架,它允许开发者使用面向对象的方式处理数据库操作,而无需直接编写SQL语句。 Castle ...

    Apress Pro ActiveRecord Databases with Ruby and Rails.pdf

    书中不仅涵盖了ActiveRecord的基础用法,还深入讲解了许多高级话题,对于希望提升自己技能水平的开发者来说是一本不可多得的好书。通过学习本书,开发者能够更加熟练地使用ActiveRecord来构建高效、可维护的Web应用...

    Ruby-Spyke与REST服务交互用一种类似于ActiveRecord的管理器

    一旦安装完成,你可以通过继承`Spyke::Base`并提供API的基础URL来创建一个新的类,这个类将代表你的远程资源: ```ruby class User base_url 'https://api.example.com' end ``` 接下来,你可以像使用...

    Ruby-Unread管理ActiveRecord对象的已读未读状态

    "Ruby-Unread"是一个专门针对ActiveRecord设计的gem,用于跟踪和管理用户阅读记录。这个库添加了“unread”和“read”方法到ActiveRecord模型中,帮助开发者轻松地处理如消息、通知等的已读未读状态。 首先,要在...

    Castle ActiveRecord 最全的入门CHM帮助文档

    2. **NHibernate 基础**:Castle ActiveRecord 建立在 NHibernate 上,后者是一个流行的.NET ORM(对象关系映射)工具。NHibernate 负责处理数据库的交互,包括对象的持久化、查询和事务管理。了解 NHibernate 的...

    Castle ActiveRecord帮助文档.rar

    Castle ActiveRecord是.NET开发中的一个强大的ORM(对象关系映射)框架,它建立在NHibernate之上,为.NET开发者提供了更高级别的抽象,使得数据库操作更加便捷。这个“Castle ActiveRecord帮助文档.rar”压缩包包含...

    ASP源码—实现ActiveRecord数据查询更新 v1.0.zip

    1. **ASP基础**:ASP是微软IIS服务器上的一个技术,它允许开发者使用VBScript或JScript等脚本语言编写动态网页。服务器处理脚本后,将结果发送到客户端的浏览器。ASP的主要特点是轻量级、易于学习,适合快速构建Web...

    JFinal-手册-1.2.pdf

    FreeMarker基础: - JFinal支持FreeMarker作为模板引擎,提供了扩展FreeMarker模板语言的能力。 JFinal架构及扩展: - JFinal的架构设计精巧,易于扩展。 - 通过插件系统可以引入新的功能,如缓存、Spring整合等。 ...

    Wpf使用Castle.ActiveRecord的示例

    Wpf使用Castle.ActiveRecord的示例,Castle针对.NET平台下的一个非常优秀的开源项目,其对数据访问层封装的非常不错,使开发者能省下大量数据访问的工作量,此示例比较基础,适合入门的朋友参考下,所需要的控件已在...

    Ruby-RubyonRails5项目的基础应用程序

    5. **ActiveRecord**:作为 Rails 的一部分,ActiveRecord 是 ORM(对象关系映射)库,负责处理数据库交互。在基础应用程序中,可能会有预定义的 ActiveRecord 模型,如 User 或 Article,它们与数据库表对应。 6. ...

    simple-chat-server:使用Sinatra和ActiveRecord的非常简单的聊天服务器

    这个"simple-chat-server"项目提供了一个很好的学习机会,帮助开发者了解如何利用Ruby、Sinatra和ActiveRecord构建一个基础的实时聊天应用。它涉及到的技术栈涵盖了从后端服务到数据库管理,再到前端通信的多个层面...

    Ruby on Rails 指南 v5.0.1 中文版

    - **ActiveRecord中的"多约定少配置"原则**:解释这一原则是如何减少开发者的工作量,并提高开发效率的。 - **创建ActiveRecord模型**:指导如何定义模型类,并与数据库表建立映射关系。 - **覆盖命名约定**:介绍...

    ruby on rails入门基础

    8. **ActiveRecord基础**: - 定义模型类,继承自`ActiveRecord::Base`,可以自动连接到数据库表。 - 使用`has_many`、`belongs_to`等关联方法建立模型间的关联。 9. **数据库迁移(Migrations)**: - 通过创建...

    research-notes:一个简单的Sinatra ActiveRecord应用程序,供用户收集有关不同主题的研究笔记

    Sinatra是一个轻量级的Ruby框架,用于构建Web应用程序,而ActiveRecord是Ruby on Rails框架的一部分,它负责处理数据库交互。因此,这个应用程序利用了Sinatra的简洁性和ActiveRecord的数据持久化能力,创建了一个...

    jfinal-2.2-manual.pdf参考手册

    - **功能:** 支持一对一、一对多等多种表之间的关联操作。 - **示例:** 使用Model类的方法实现关联查询。 **6.10 复合主键** - **功能:** 支持复合主键的表结构。 - **示例:** `User.set("id1", 1).set("id2",...

    yii-advanced-app-2.0.4

    在开发过程中,Yii 2 提供了 Gii 工具,这是一个自动生成代码的工具,可以帮助快速创建模型、控制器、视图等基础结构。此外,Yii 还支持 RESTful API 开发,使得构建 Web 服务更加便捷。 总的来说,"yii-advanced-...

    MyBatis-Plus入门+MyBatis-Plus文档手册 中文pdf高清版.rar

    MyBatisPlus是一个Mybatis的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。它主要通过启动时自动注入基本CURD,达到简化操作的目的。 关于mybatis-plus的更多介绍及特性,可以参考本...

Global site tag (gtag.js) - Google Analytics