new 和 build 具有相同的功能。 通常build 用的创建关系的对象。如
Class User < ActiveRecord::Base
has many :messages
end
Class Message < ActiveRecord::Base
belongs_to :user
end
在新建一个用户的同时, 创建一个他从属的message对象, 通常使用build.
@user=User.new
@user.messages.build
......
create() 和create!()用于在数据库中创建一个用户。 有人说他相当于 new+save.
但需要注意的是create and create!可以接受hash 或array 做为参数。 并可以同时在数据库中创建多个记录。需要注意的是他的返回值。
不论是否成功的创建记录, create均返回一个或多个(array) 对象。如果创建失败,对象的errors 保存错误信息。
而create!()在创建失败时, 则会丢出一个ActiveRecord::RecordInvalid 异常。