知识点:build and new , create , ! , save
create , ! , save
save:rails中的save其实是create_or_update,新建或修改记录!不一定是新建, create: create = new + 执行sql。 !:new!, create!, build!与new, create, build的区别是带!的方法会执行validate,如果验证失败会抛出导常。
build和new的区别
new :只是在内存中新建一个对象,操作数据库要调用save方法。 build:与new基本相同,多用于一对多情况下。
@article = Article.create(params[:article]) (o)
@article = Article.build(params[:article]) (x)
IN RUBY
Order.new(o)
Order.build(x)
IN RAILS
Order.new(o)
Order.build(x)
current_user.orders.new(o)
current_user.orders.build(o)
[@rder = Order.new + @order.user = current_user] = [@order = current_user.orders.build]
o = Object.new(:foo => 'bar')
o.save
等价于
o = Object.create(:foo => 'bar')
资料1