欢迎来到天天文库
浏览记录
ID:37873642
大小:174.00 KB
页数:24页
时间:2019-06-01
《ActiveRecord(Ruby)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、ActiveRecord是Rails提供的一个对象关系映射(ORM)层,从这篇开始,我们来了解ActiveRecord的一些基础内容,连接数据库,映射表,访问数据等。 ActiveRecord使用基本的ORM模式:表映射成类,行映射成为对象,列映射成对象的属性。与很多大量使用配置的ORM库不同,ActiveRecord最小化了配置。想象一下,有一个使用ActiveRecord的程序把Mysql数据库中的orders表转换到类,通过制定的ID查找到order,设定order的名称,然后保存回数据库:req
2、uire"rubygems"require"active_record"ActiveRecord::Base.establish_connection(:adapter=>"mysql",:host=>"localhost",:database=>"railsdb")classOrder3、些事情,下面我们来看看ActiveRecord是怎样工作的。 表和类 当你创建了一个ActiveRecord::Base类的子类,ActiveRecord假定表名是复数的,而类名是单数的,当类名包括多个单词时,表名被假定为单词间带有下划线,复数形式不规则,例如:类名 表名 类名 表名Order orders LineItem line_itemsTaxAgency tax_agencies Person 4、 peopleDiagnosis diagnoses Quantity quantitiesBatch batches Datum data 默认的,ActiveRecord的表名是复数的,类名是单数的,如果你不太习惯,可以通过设置一个全局标记来禁用它,在config目录的environment.rb文件中设置: ActiveRecord::Base.pluralize_table_names=false 单复数规则可以对付大部分情况,5、对于一些特殊情况,ActiveRecord允许我们覆盖默认的生成的表名,使用set_table_name命令,例如:classSheep6、rder类没有提及关于orders表的任何东西,这是因为ActiveRecord在运行时来确定这些对应关系,ActiveRecord将数据库中的模式反应到类中。 我们的orders表可能使用下面的sql来创建:createtableorders(idintnotnullauto_increment,namevarchar(100)notnull,emailvarchar(255)notnull,addresstextnotnull,pay_typechar(10)notnull,shipped_atda7、tetimenull,primarykey(id)); 我们可以创建一个类来转换这个表:require'rubygems'require_gem'activerecord'#Connectioncodeomitted...classOrder8、pp'ppOrder.columns.map{9、col10、col.name}ppOrder.columns_hash['shipped_at'] 运行代码,会得到下面的输出:["id","name","email","address","pay_type","shipped_at"]#
3、些事情,下面我们来看看ActiveRecord是怎样工作的。 表和类 当你创建了一个ActiveRecord::Base类的子类,ActiveRecord假定表名是复数的,而类名是单数的,当类名包括多个单词时,表名被假定为单词间带有下划线,复数形式不规则,例如:类名 表名 类名 表名Order orders LineItem line_itemsTaxAgency tax_agencies Person
4、 peopleDiagnosis diagnoses Quantity quantitiesBatch batches Datum data 默认的,ActiveRecord的表名是复数的,类名是单数的,如果你不太习惯,可以通过设置一个全局标记来禁用它,在config目录的environment.rb文件中设置: ActiveRecord::Base.pluralize_table_names=false 单复数规则可以对付大部分情况,
5、对于一些特殊情况,ActiveRecord允许我们覆盖默认的生成的表名,使用set_table_name命令,例如:classSheep6、rder类没有提及关于orders表的任何东西,这是因为ActiveRecord在运行时来确定这些对应关系,ActiveRecord将数据库中的模式反应到类中。 我们的orders表可能使用下面的sql来创建:createtableorders(idintnotnullauto_increment,namevarchar(100)notnull,emailvarchar(255)notnull,addresstextnotnull,pay_typechar(10)notnull,shipped_atda7、tetimenull,primarykey(id)); 我们可以创建一个类来转换这个表:require'rubygems'require_gem'activerecord'#Connectioncodeomitted...classOrder8、pp'ppOrder.columns.map{9、col10、col.name}ppOrder.columns_hash['shipped_at'] 运行代码,会得到下面的输出:["id","name","email","address","pay_type","shipped_at"]#
6、rder类没有提及关于orders表的任何东西,这是因为ActiveRecord在运行时来确定这些对应关系,ActiveRecord将数据库中的模式反应到类中。 我们的orders表可能使用下面的sql来创建:createtableorders(idintnotnullauto_increment,namevarchar(100)notnull,emailvarchar(255)notnull,addresstextnotnull,pay_typechar(10)notnull,shipped_atda
7、tetimenull,primarykey(id)); 我们可以创建一个类来转换这个表:require'rubygems'require_gem'activerecord'#Connectioncodeomitted...classOrder8、pp'ppOrder.columns.map{9、col10、col.name}ppOrder.columns_hash['shipped_at'] 运行代码,会得到下面的输出:["id","name","email","address","pay_type","shipped_at"]#
8、pp'ppOrder.columns.map{
9、col
10、col.name}ppOrder.columns_hash['shipped_at'] 运行代码,会得到下面的输出:["id","name","email","address","pay_type","shipped_at"]#
此文档下载收益归作者所有