rubyonrails:Ruby on rails开发从头来( 4十 4)- ActiveRecord基础(创建记录)

  Active Record使得实现CRUD数据库基本操作变得简单在下面几节里我们使用Mysql数据库中orders表来进行CRUD操作这次先看创建(Create)   我们假想有个Model名为Order:

Order < ActiveRecord::Base
end


  在面向对象模型里表对应类表中行对应类对象我们可以通过创建个类对象来创建条记录对orders表我们可以使用Order.New思路方法来创建个Order对象也就对应了orders表条记录然后我们给该对象每个属性赋值最后我们对象save思路方法将数据写回数据库如果不save那么这个对象仅仅在内存中存在而不是数据库

an_order = Order.
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. do |o|
o.name = "Dave Thomas"
# . . .
o.save
end


  Active Record也可以接收组哈希(Hash)参数值来作为可选参数由属性名字和相对应值组成:

an_order = Order.(
:name => "Dave Thomas",
:email => "[email protected]",
:address => "
123 Main St
",
:pay_type => "check")
an_order.save


  注意到现在为止我们还没有任何有关id设置这是我们使用Active Record默认约定将orders表主键为eger类型在存入数据库时候Active Record自动给新建对象生成个唯并且设置到id属性上我们可以在save的后查询id值:

an_order = Order.
an_order.name = "Dave Thomas"
# ...
an_order.save
puts "The ID of this order is #{an_order.id}"


  构造在内存中创建了个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"
} ] )


  思路方法和create真正目就是让我们可以通过组参数就能够创建Model对象:

  order = Order.create(params)

Tags:  rubyonrails安装 rubyforrails rubyrails rubyonrails

延伸阅读

最新评论

发表评论