`

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,我整理了好久,自己从官方一个资源库找到并整理好的一套。 -------------...

    Wpf使用Castle.ActiveRecord的示例

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

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

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

    hutool-all-5.7.22.jar

    一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件: 布隆过滤 缓存 克隆接口 类型转换 日期处理 数据库ORM(基于ActiveRecord思想...

    全面学习Mybatis插件之Mybatis-Plus_Java框架视频教程

    MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。使用原生的Mybatis编写持久层逻辑时,所需要的代码是比较繁琐的,需要定义Mapper接口和...

    hutool-all-5.3.4.jar

    一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件: 布隆过滤 缓存 克隆接口 类型转换 日期处理 数据库ORM(基于ActiveRecord思想...

    web开发_ruby_on_rails

    没有其他任何一门编程语言可以以这样一个简单的Web应用程 序框架而自豪,该框架也吸取了大部分该语言开发者的思想(注1)。本章论证重要的基 础Rails 使用原理(类似15.6 节中),给出普通Web 应用程序模式的Rails ...

    hutool-all-5.6.4 jar包.rar

    一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件: 布隆过滤、缓存、克隆接口、类型转换、日期处理、数据库ORM(基于ActiveRecord思想)、...

    provenance:很棒的Sinatra入门模板-包括rspec,activerecord,activesupport和Foundation

    #Template模块化Sinatra应用##实施步骤首先在项目中搜索“ ReplaceWithName”,然后为您的应用命名! 这将重命名所有名称空间...开箱即用的配置Postgres和ActiveRecord 基础主动支持小马的电子邮件Rspec /水豚进行测试

    genealogy:使ActiveRecord模型充当谱系

    家谱是一个Ruby宝石库,它扩展了ActiveRecord模型,以使其实例充当亲戚,以便您可以构建和查询家谱。 为此,每个实例都需要跟踪其父级和母级,因此只需将两个外部键列添加到基础数据库表中(例如: father_id和...

    最新_尚硅谷_mybatisplus_全套视频教程

    MyBatis-Plus是一款非常强大的MyBatis增强工具包,只做增强不做改变.在不用编写任何SQL语句的情况下即可以极其方便的实现单一、批量、分页等操作。本套教程基于MyBatis-Plus新2.3版本,详细讲授:集成Mybatis-Plus、...

    makara:连接的读写代理; 还提供了ActiveRecord适配器

    您的代理服务器连接类应实现一个connection_for实例方法,该方法将通过单独的配置提供,并期望返回真正的连接。 class MyAwesomeSqlProxy &lt; :: Makara :: Proxy def connection_for ( config ) :: Sql :: ...

    find_as_hashes:提供ActiveRecord方法以属性散列而不是实例化ActiveRecord对象的形式返回结果。 在处理大量结果以提高性能时非常有用

    布尔值将返回基础表示形式,而序列化的对象将作为字符串返回。 all_as_hashes工作原理与all相似,但是将结果作为哈希数组返回。 first_as_hash与first相似,但返回第一个匹配记录的哈希。例子&gt; User.where(:email =...

    依据thev21/程序员个人简历模板的小程序

    个人简历模板,让每个人都能拥有一个属于自己的线上简历 优点 | Advantages 无侵入:Mybatis-Plus 在 Mybatis 的基础上进行扩展,只做增强不做改变,引入 Mybatis-Plus 不会对您现有的 Mybatis 构架产生任何影响,...

    Hutool v4.5.15

    Hutool是一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:布隆过滤缓存克隆接口类型转换日期处理数据库ORM(基于ActiveRecord思想)...

    yii framework(Yii)框架window版

    Yii是一个基于组件的高性能PHP框架,用于开发大型Web应用。...通过一个简单的命令行工具 yiic 可以快速创建一个web应用程序的代码框架,开发者可以在生成的代码框架基础上添加业务逻辑,以快速完成应用程序的开发。

    Struts2-rest插件(有注释)

    有 Ruby On Rails 开发经验的读者知道 Rails 有一条重要原则:约定优于配置。Rails 开发者只需要按约定开发 ActiveRecord、ActiveController 即可,无需进行配置。很明显,Struts 2 的 Convention 插件借鉴了 Rails ...

    teaching_node:GA-SF 教授节点基础知识的方法的简短细分

    教学节点 网络基础 目标 比较和对比教学 Rails 和 Express 之间的相似之处 回答与教授 JS 第一课程相关的问题。...有了 Rails, ActiveRecord为我们的数据库提供了一个迁移系统和一个建模系统。 在

    hutool框架代码

    一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件: 布隆过滤 缓存 克隆接口 类型转换 日期处理 数据库ORM(基于...

    Mybatis plus 基于 springBoot 源码

    Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 特性 无侵入:Mybatis-Plus 在 Mybatis 的基础上进行扩展,只做增强不做改变,引入 Mybatis...

Global site tag (gtag.js) - Google Analytics