Rails — create and create! methods, RoR 3 Tutorial

前端 未结 2 961
萌比男神i
萌比男神i 2021-02-02 06:31

So I know the distinction between the bang (exclamation mark) and non-bang methods usually is whether the method will modify the object itself or return a separate modified obje

相关标签:
2条回答
  • 2021-02-02 07:28

    Hope this helps as well:

    The bang versions (e.g. save!) raise an exception if the record is invalid. The non-bang versions don’t: save and update_attributes return false, create and update just return the objects.

    Source: http://edgeguides.rubyonrails.org/active_record_validations.html#when-does-validation-happen-questionmark

    Edit: Changed source to fix broken link

    0 讨论(0)
  • 2021-02-02 07:29

    Though a lot of classes treat bang methods as "a method that modifies the object in place", I like the description of bang methods from the Eloquent Ruby book better:

    In practice, Ruby programmers reserve ! to adorn the names of methods that do something unexpected, or perhaps a bit dangerous

    So in this case, the "unexpected" result is that an exception is raised instead of just failing and returning false.

    0 讨论(0)
提交回复
热议问题