创造了什么!铁轨意味着什么?

时间:2011-11-10 07:04:03

标签: ruby-on-rails ruby

这在Rails中有什么作用?

create! do |user| 
  #initialise user 
end

我认为它创建了一个用户对象并将其保存到数据库中。与仅说user.new(...)user.save()

有何不同?

3 个答案:

答案 0 :(得分:21)

简而言之:

  • create!引发异常,而create返回对象(未保存的对象,如果它未通过验证)。
  • {li> save!save返回true / false时出现错误。
  • save不接受属性,create会这样做。

new无法保存。 newbuild上下文中的ActiveRecord类似。 create保存到数据库并返回truefalse,具体取决于模型验证。 create!保存到数据库,但如果模型验证(或任何其他错误)中存在错误,则会引发异常。

答案 1 :(得分:3)

如果创建记录失败,create!会抛出异常,new然后save(或只有create没有感叹号)会以静默方式退出。

答案 2 :(得分:-2)

create获取属性,因此在这里使用块有点不寻常。 您提到的代码是在传递给create!的块中进行初始化 它原则上与new相同,然后是初始化,然后是save!

保存,保存!,创建,停止!,更新,更新等等有很多变化, 在验证方面也存在差异,并且回调

有关详细信息,请查看API :(在第一个链接中讨论)

http://api.rubyonrails.org/classes/ActiveRecord/Base.html

http://apidock.com/rails/ActiveRecord/Base

http://m.onkey.org/active-record-query-interface