Welcome 微信登录

首页 / 软件开发 / JAVA / Rails开发细节(二)CRUD

Rails开发细节(二)CRUD2013-12-11 virusswb译 Create & Save

创建 & 保存

order = Order.neworder.name = "virusswb"order.email = "asdf@exmaple.com"order.save
调用save方法之后就可以保存到数据库了。

还可以用block来创建并保存。

Order.new do |order| order.name = "virusswb"order.email = "asdf@example.com"order.save end
还可以使用hash的方式创建并保存。

order = Order.new( :name => "virus", :email => "adf@example.com") order.save
默认id主键不用赋值,是integer的自增列。

上面的方法都需要调用save方法才 能保存到数据库,用create方法可以合二为一,创建同时保存到数据库。

order = Order.create( :name => "virus", :email => "adf@exmaple.com")
还可以一次保存多个,只要给create传递一个数组就可以实现。

orders = Order.create( [{ :name => "virus1",:email => "111@123.com" },{ :name => "swb2",:email => "222@123.com" }] )
返回也是一个数组。

从form放入参数中直接创建一个model对象。

@order = Order.new(params[:order])

Order.find(1)可以用来获取id=1的model,但是如果数据表中不存在 id=1的model,就会抛出RecordNotFound异常。

如果使用Order.where(:id => 1).first,是告诉数 据库“我需要id=1的记录”,如果不存在这样的记录,不会抛出异常,返回的是nil。

Reading Existing Rows

读取

an_order = Order.find(27)

返回一条记录,如果没有,会抛出 RecordNotFound异常。

product_list = params[:product_ids]

total = Product.find (product_list).sum(&:price)

给find传入array,可以实现多条记录的查询,但是如果其中一个 id不存在的话,还是会抛出RecordNotFound异常 。