2014-12-02 93 views

回答

0

ActiveRecord::Base文档:

创建(属性=无){|对象| ...}

如果验证通过,则创建一个对象(或多个对象)并将其保存到数据库中。无论对象是否成功保存到数据库,都会返回结果对象。

new(attributes = nil){| self if block_given?| ...}

新对象可以被实例化或者为空(没有传递施工参数)或预先设定属性,但还没有被保存(通过匹配相关的表的列名的键名的哈希)。在这两种情况下,有效的属性键都由关联表的列名确定 - 因此,您不能拥有不属于表列的属性。

因此create实例化新对象,验证它,然后将其保存到数据库。而new只创建本地对象,但不会尝试验证或将其保存到数据库。

https://stackoverflow.com/a/2472416/634120

+0

谢谢你,但我很困惑,我愿做只使用新的?你能提供一个例子吗? – 2014-12-02 16:40:10

+0

如果你不想立即保存,你可以做'something = Something.new',然后'如果something.save ...'或者如果你以后不能拥有一些属性,那么你可以创建它,然后设置更多属性,例如'something.property = variable'然后'save'。只取决于你在做什么。 'new'可以派上用场,但'create'可能更常用。 – martincarlin87 2014-12-02 16:44:59

+0

完美的解释。谢谢! – 2014-12-02 16:47:09