创造之间的区别!并在创建关系对象时创建

时间:2016-06-14 23:54:56

标签: ruby-on-rails

我正在做迈克尔·哈特尔的教程,接下来的一行让我头疼了一下:

 user.microposts.create!(content: content) 

通常,!运算符意味着它修改了调用它的对象。然而,在这种情况下,我发现省略了!仍然修改了用户变量AND将微博插入数据库中。是什么 !在这种情况下,运营商呢?

2 个答案:

答案 0 :(得分:0)

如果模型无效,则Bang操作员(save! create!)会引发异常,非爆炸(savecreate)只返回false。 从这里http://edgeguides.rubyonrails.org/active_record_validations.html#when-does-validation-happen-questionmark

答案 1 :(得分:0)

差异是create!会在失败时引发异常(可能是由于验证或其他回调),而create则返回对象。 使用create方法,您可以取回micropost以检查是否存在任何错误:micropost.errors。而您在create!

中处理例外情况