Ruby on rails开发从头来(四十四)- ActiveRecord基础(创建记录)
2009-08-07 11:06
513 查看
Active Record使得实现CRUD的数据库基本操作变得简单,在下面的几节里我们使用Mysql数据库中的orders表来进行CRUD的操作,这次先看创建(Create)。
我们假想有一个Model,名为Order:
在面向对象的模型里,表对应类,表中的行对应类的对象。我们可以通过创建一个类的对象来创建一条记录。对orders表,我们可以使用Order.New()方法来创建一个Order的对象,也就对应了orders表的一条记录,然后我们给该对象的每个属性赋值,最后,我们调用对象的save()方法将数据写回数据库,如果不调用save()的话,那么这个对象仅仅在内存中存在,而不是数据库。
Active Record的构造器有一个可选的块(block),这个块可以将创建的Order对象做为参数,这样就不需要再创建一个Order类的对象的变量了:
Active Record也可以接收一组哈希(Hash)参数的值来作为可选参数,由属性的名字和相对应的值组成:
注意到现在为止,我们还没有任何关于id的设置,这是因为我们使用Active Record的默认约定,将orders表的主键为一个integer类型的列。在存入数据库的时候,Active Record自动给新建的对象生成一个唯一的值,并且设置到id属性上,我们可以在save()之后查询id的值:
new()构造函数在内存中创建了一个Order类的对象,你需要在某个时候调用save()方法来保存到数据库。Active Record还有一个约定的方法create(),下面的例子说明这个方法的用法,同时展示了创建对象和存储到数据库:
也可以给create()方法传递哈希(hash)的数组,在数据库中创建多条记录,并且返回对应的对象数组。
方法new()和create()的真正目的就是让我们可以通过一组参数就能够创建Model对象:
order = Order.create(params)
来源:博客园 作者:Cure 责编:豆豆技术应用
我们假想有一个Model,名为Order:
class Order < ActiveRecord::Base end
在面向对象的模型里,表对应类,表中的行对应类的对象。我们可以通过创建一个类的对象来创建一条记录。对orders表,我们可以使用Order.New()方法来创建一个Order的对象,也就对应了orders表的一条记录,然后我们给该对象的每个属性赋值,最后,我们调用对象的save()方法将数据写回数据库,如果不调用save()的话,那么这个对象仅仅在内存中存在,而不是数据库。
an_order = Order.new an_order.name = "Dave Thomas" an_order.email = "dave@pragprog.com" an_order.address = " 123 Main St " an_order.pay_type = "check" an_order.save
Active Record的构造器有一个可选的块(block),这个块可以将创建的Order对象做为参数,这样就不需要再创建一个Order类的对象的变量了:
Order.new do |o| o.name = "Dave Thomas" # . . . o.save end
Active Record也可以接收一组哈希(Hash)参数的值来作为可选参数,由属性的名字和相对应的值组成:
an_order = Order.new( :name => "Dave Thomas", :email => "dave@pragprog.com", :address => " 123 Main St ", :pay_type => "check") an_order.save
注意到现在为止,我们还没有任何关于id的设置,这是因为我们使用Active Record的默认约定,将orders表的主键为一个integer类型的列。在存入数据库的时候,Active Record自动给新建的对象生成一个唯一的值,并且设置到id属性上,我们可以在save()之后查询id的值:
an_order = Order.new an_order.name = "Dave Thomas" # ... an_order.save puts "The ID of this order is #{an_order.id}"
new()构造函数在内存中创建了一个Order类的对象,你需要在某个时候调用save()方法来保存到数据库。Active Record还有一个约定的方法create(),下面的例子说明这个方法的用法,同时展示了创建对象和存储到数据库:
an_order = Order.create( :name => "Dave Thomas", :email => "dave@pragprog.com", :address => " 123 Main St ", :pay_type => "check")
也可以给create()方法传递哈希(hash)的数组,在数据库中创建多条记录,并且返回对应的对象数组。
orders = Order.create( [ { :name => "Dave Thomas", :email => "dave@pragprog.com", :address => " 123 Main St ", :pay_type => "check" }, { :name => "Andy Hunt", :email => "andy@pragprog.com", :address => " 456 Gentle Drive ", :pay_type => "po" } ] )
方法new()和create()的真正目的就是让我们可以通过一组参数就能够创建Model对象:
order = Order.create(params)
来源:博客园 作者:Cure 责编:豆豆技术应用
相关文章推荐
- Ruby on rails开发从头来(四十四)- ActiveRecord基础(创建记录)
- Ruby on rails开发从头来(四十四)- ActiveRecord基础(创建记录)
- Ruby on rails开发从头来(五十)- ActiveRecord基础(更新记录)
- Ruby on rails开发从头来(五十二)- ActiveRecord基础(删除记录)
- Ruby on rails开发从头来(五十二)- ActiveRecord基础(删除记录)
- Ruby on rails开发从头来(五十)- ActiveRecord基础(更新记录)
- Ruby on rails开发从头来(五十)- ActiveRecord基础(更新记录)
- Ruby on rails开发从头来(五十九)- ActiveRecord基础(预加载子记录)
- Ruby on rails开发从头来(五十二)- ActiveRecord基础(删除记录)
- Ruby on rails开发从头来(四十五)- ActiveRecord基础(读取记录)
- Ruby on rails开发从头来(五十九)- ActiveRecord基础(预加载子记录)
- Ruby on rails开发从头来(五十九)- ActiveRecord基础(预加载子记录)
- Ruby on rails开发从头来(四十五)- ActiveRecord基础(读取记录)
- Ruby on rails开发从头来(三十九)- ActiveRecord基础(访问属性)
- Ruby on rails开发从头来(四十七)- ActiveRecord基础(强大的find方法)
- Ruby on rails开发从头来(五十五)- ActiveRecord基础(一对一关联关系)
- Ruby on rails开发从头来(四十六)- ActiveRecord基础(SQL和Active Record)
- Ruby on rails开发从头来(五十七)- ActiveRecord基础(多对多关联关系)
- Ruby on rails开发从头来(四十)- ActiveRecord基础(Boolean属性)
- Ruby on rails开发从头来(五十一)- ActiveRecord基础(并发处理)