这是一个非常简单的问题,但我很困惑何时应该在控制器中使用.new和.create。我想我真正想问的是.new的用途是什么以及.create的用途是什么?谢谢。
答案 0 :(得分:0)
来自ActiveRecord::Base文档:
create(attributes = nil){| object | ...}
如果验证通过,则创建一个对象(或多个对象)并将其保存到数据库。无论对象是否已成功保存到数据库,都会返回结果对象。
new(attributes = nil){| self if block_given?| ...}
可以将新对象实例化为空(传递无构造参数)或使用属性预先设置但尚未保存(传递具有与关联表列名匹配的键名的哈希)。在这两种情况下,有效的属性键由关联表的列名确定 - 因此您不能拥有不属于表列的属性。
因此create
实例化新对象,验证它,然后将其保存到数据库中。 new
仅创建本地对象,但不会尝试验证或将其保存到数据库。