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异常 。