• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Ruby on rails开发从头来(四十四)- ActiveRecord基础(创建记录) ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
  Active Record使得实现CRUD的数据库基本操作变得简单,在下面的几节里我们使用Mysql数据库中的orders表来进行CRUD的操作,这次先看创建(Create)。

    我们假想有一个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 = "[email protected]"

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 => "[email protected]",

: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 => "[email protected]",

:address => "

123 Main St
",

:pay_type => "check")

也可以给create()方法传递哈希(hash)的数组,在数据库中创建多条记录,并且返回对应的对象数组。

orders = Order.create(

[ { :name => "Dave Thomas",

:email => "[email protected]",

:address => "

123 Main St
",

:pay_type => "check"

},

{ :name => "Andy Hunt",

:email => "[email protected]",

:address => "

456 Gentle Drive
",

:pay_type => "po"

} ] )

方法new()create()的真正目的就是让我们可以通过一组参数就能够创建Model对象:

order = Order.create(params)


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Ruby之旅(16)异常处理rescue与ensure发布时间:2022-07-14
下一篇:
1.Ruby基础知识发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap