这一篇主要讲:如何连接到数据库,如何映射表,以及如何处理数据。
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()可以确保进行模型类中定义的业务规则检查,以保证数据的完整性
分享到:
相关推荐
如果你想使用Castle.ActiveRecord,但又不想使用.NET Framework 3.0/3.5/4.0或更高版本,那么这个就是你所需要的,For .NET FrameWork 2.0,我整理了好久,自己从官方一个资源库找到并整理好的一套。 -------------...
Wpf使用Castle.ActiveRecord的示例,Castle针对.NET平台下的一个非常优秀的开源项目,其对数据访问层封装的非常不错,使开发者能省下大量数据访问的工作量,此示例比较基础,适合入门的朋友参考下,所需要的控件已在...
MyBatisPlus是一个Mybatis的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。它主要通过启动时自动注入基本CURD,达到简化操作的目的。 关于mybatis-plus的更多介绍及特性,可以参考本...
一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件: 布隆过滤 缓存 克隆接口 类型转换 日期处理 数据库ORM(基于ActiveRecord思想...
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。使用原生的Mybatis编写持久层逻辑时,所需要的代码是比较繁琐的,需要定义Mapper接口和...
一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件: 布隆过滤 缓存 克隆接口 类型转换 日期处理 数据库ORM(基于ActiveRecord思想...
没有其他任何一门编程语言可以以这样一个简单的Web应用程 序框架而自豪,该框架也吸取了大部分该语言开发者的思想(注1)。本章论证重要的基 础Rails 使用原理(类似15.6 节中),给出普通Web 应用程序模式的Rails ...
一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件: 布隆过滤、缓存、克隆接口、类型转换、日期处理、数据库ORM(基于ActiveRecord思想)、...
#Template模块化Sinatra应用##实施步骤首先在项目中搜索“ ReplaceWithName”,然后为您的应用命名! 这将重命名所有名称空间...开箱即用的配置Postgres和ActiveRecord 基础主动支持小马的电子邮件Rspec /水豚进行测试
家谱是一个Ruby宝石库,它扩展了ActiveRecord模型,以使其实例充当亲戚,以便您可以构建和查询家谱。 为此,每个实例都需要跟踪其父级和母级,因此只需将两个外部键列添加到基础数据库表中(例如: father_id和...
MyBatis-Plus是一款非常强大的MyBatis增强工具包,只做增强不做改变.在不用编写任何SQL语句的情况下即可以极其方便的实现单一、批量、分页等操作。本套教程基于MyBatis-Plus新2.3版本,详细讲授:集成Mybatis-Plus、...
您的代理服务器连接类应实现一个connection_for实例方法,该方法将通过单独的配置提供,并期望返回真正的连接。 class MyAwesomeSqlProxy < :: Makara :: Proxy def connection_for ( config ) :: Sql :: ...
布尔值将返回基础表示形式,而序列化的对象将作为字符串返回。 all_as_hashes工作原理与all相似,但是将结果作为哈希数组返回。 first_as_hash与first相似,但返回第一个匹配记录的哈希。例子> User.where(:email =...
个人简历模板,让每个人都能拥有一个属于自己的线上简历 优点 | Advantages 无侵入:Mybatis-Plus 在 Mybatis 的基础上进行扩展,只做增强不做改变,引入 Mybatis-Plus 不会对您现有的 Mybatis 构架产生任何影响,...
Hutool是一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:布隆过滤缓存克隆接口类型转换日期处理数据库ORM(基于ActiveRecord思想)...
Yii是一个基于组件的高性能PHP框架,用于开发大型Web应用。...通过一个简单的命令行工具 yiic 可以快速创建一个web应用程序的代码框架,开发者可以在生成的代码框架基础上添加业务逻辑,以快速完成应用程序的开发。
有 Ruby On Rails 开发经验的读者知道 Rails 有一条重要原则:约定优于配置。Rails 开发者只需要按约定开发 ActiveRecord、ActiveController 即可,无需进行配置。很明显,Struts 2 的 Convention 插件借鉴了 Rails ...
教学节点 网络基础 目标 比较和对比教学 Rails 和 Express 之间的相似之处 回答与教授 JS 第一课程相关的问题。...有了 Rails, ActiveRecord为我们的数据库提供了一个迁移系统和一个建模系统。 在
一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件: 布隆过滤 缓存 克隆接口 类型转换 日期处理 数据库ORM(基于...
Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 特性 无侵入:Mybatis-Plus 在 Mybatis 的基础上进行扩展,只做增强不做改变,引入 Mybatis...