CINXE.COM

ActiveRecord::Validations

<!DOCTYPE html> <html lang="en"> <head> <title>ActiveRecord::Validations</title> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width,initial-scale=1"> <link rel="stylesheet" href="../../css/reset.css" type="text/css" media="screen" /> <link rel="stylesheet" href="../../css/panel.css" type="text/css" media="screen" /> <link rel="stylesheet" href="../../css/main.css" type="text/css" media="screen" /> <link rel="stylesheet" href="../../css/github.css" type="text/css" media="screen" /> <script src="../../js/jquery-3.5.1.min.js" type="text/javascript" charset="utf-8"></script> <script src="../../js/main.js" type="text/javascript" charset="utf-8"></script> <script src="../../js/highlight.pack.js" type="text/javascript" charset="utf-8"></script> <script src="../../js/turbolinks.js" type="text/javascript" charset="utf-8"></script> <script src="../../js/search_index.js" type="text/javascript" charset="utf-8"></script> <script src="../../js/searcher.js" type="text/javascript" charset="utf-8"></script> <script src="../../panel/tree.js" type="text/javascript" charset="utf-8"></script> <script src="../../js/searchdoc.js" type="text/javascript" charset="utf-8"></script> <meta name="data-rel-prefix" content="../../"> <meta name="data-tree-keys" content='["ActiveRecord", "Validations"]'> <meta property="og:title" value="ActiveRecord::Validations"> <meta name="description" content="Active Record Validations Active Record includes the majority of its validations from ActiveModel::Validations. In Active Record, all validations are performed on save by default."> <meta property="og:description" content="Active Record Validations Active Record includes the majority of its validations from ActiveModel::Validations. In Active Record, all validations are performed on save by default."> <meta name="keywords" content="ActiveRecord::Validations class, save, save!, valid?, validate"> </head> <body> <a class="sr-only sr-only-focusable" href="#content" data-turbolinks="false">Skip to Content</a> <a class="sr-only sr-only-focusable" href="#search" data-turbolinks="false">Skip to Search</a> <input type="checkbox" id="hamburger" class="panel_checkbox"> <label class="panel_mobile_button" for="hamburger"><span></span> Menu</label> <nav class="panel panel_tree" id="panel" data-turbolinks-permanent> <div class="header"> <input type="text" placeholder="Search (/) for a class, method, ..." autosave="searchdoc" results="10" id="search" autocomplete="off" tabindex="-1" /> <label class="panel_mobile_button_close" for="hamburger"><span></span> Close</label> </div> <div class="tree"> <ul> </ul> </div> <div class="result"> <ul> </ul> </div> <a href="links.html" id="links">index</a> </nav> <div class="banner"> <span>Ruby on Rails 8.0.1</span><br /> <h2> <span class="type">Module</span> ActiveRecord::Validations </h2> <ul class="files"> <li><a href="../../files/activerecord/lib/active_record/validations_rb.html">activerecord/lib/active_record/validations.rb</a></li> <li><a href="../../files/activerecord/lib/active_record/validations/absence_rb.html">activerecord/lib/active_record/validations/absence.rb</a></li> <li><a href="../../files/activerecord/lib/active_record/validations/associated_rb.html">activerecord/lib/active_record/validations/associated.rb</a></li> <li><a href="../../files/activerecord/lib/active_record/validations/length_rb.html">activerecord/lib/active_record/validations/length.rb</a></li> <li><a href="../../files/activerecord/lib/active_record/validations/numericality_rb.html">activerecord/lib/active_record/validations/numericality.rb</a></li> <li><a href="../../files/activerecord/lib/active_record/validations/presence_rb.html">activerecord/lib/active_record/validations/presence.rb</a></li> <li><a href="../../files/activerecord/lib/active_record/validations/uniqueness_rb.html">activerecord/lib/active_record/validations/uniqueness.rb</a></li> </ul> <div id="version-badge">v8.0.1</div> </div> <main id="bodyContent"> <div id="content"> <div class="description"> <h1 id="module-ActiveRecord::Validations-label-Active+Record+Validations">Active Record Validations</h1> <p>Active Record includes the majority of its validations from <a href="../ActiveModel/Validations.html"><code>ActiveModel::Validations</code></a>.</p> <p>In Active Record, all validations are performed on save by default. <a href="Validations.html"><code>Validations</code></a> accept the <code>:on</code> argument to define the context where the validations are active. Active Record will pass either the context of <code>:create</code> or <code>:update</code> depending on whether the model is a <a href="Persistence.html#method-i-new_record-3F">new_record?</a>.</p> </div> <!-- Namespace --> <div class="sectiontitle">Namespace</div> <ul> <li> <span class="type">MODULE</span> <a href="Validations/ClassMethods.html">ActiveRecord::Validations::ClassMethods</a> </li> </ul> <!-- Method ref --> <div class="sectiontitle">Methods</div> <dl class="methods"> <dt>S</dt> <dd> <ul> <li> <a href="#method-i-save">save</a>, </li> <li> <a href="#method-i-save-21">save!</a> </li> </ul> </dd> <dt>V</dt> <dd> <ul> <li> <a href="#method-i-valid-3F">valid?</a>, </li> <li> <a href="#method-i-validate">validate</a> </li> </ul> </dd> </dl> <!-- Methods --> <h2 class="sectiontitle">Instance Public methods</h2> <div class="method"> <h3 class="title method-title" id="method-i-save"> <b>save</b>(**options) <a href="../../classes/ActiveRecord/Validations.html#method-i-save" name="method-i-save" class="permalink">Link</a> </h3> <div class="description"> <p>The validation process on save can be skipped by passing <code>validate: false</code>. The validation context can be changed by passing <code>context: context</code>. The regular <a href="Persistence.html#method-i-save">ActiveRecord::Base#save</a> method is replaced with this when the validations module is mixed in, which it is by default.</p> </div> <div class="sourcecode"> <p class="source-link"> Source: <a href="javascript:toggleSource('method-i-save_source')" id="l_method-i-save_source">show</a> | <a href="https://github.com/rails/rails/blob/cf6ff17e9a3c6c1139040b519a341f55f0be16cf/activerecord/lib/active_record/validations.rb#L47" target="_blank" class="github_url">on GitHub</a> </p> <div id="method-i-save_source" class="dyn-source"> <pre><span class="ruby-comment"># File activerecord/lib/active_record/validations.rb, line 47</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">save</span>(<span class="ruby-operator">**</span><span class="ruby-identifier">options</span>) <span class="ruby-identifier">perform_validations</span>(<span class="ruby-identifier">options</span>) <span class="ruby-operator">?</span> <span class="ruby-keyword">super</span> <span class="ruby-operator">:</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div class="method"> <h3 class="title method-title" id="method-i-save-21"> <b>save!</b>(**options) <a href="../../classes/ActiveRecord/Validations.html#method-i-save-21" name="method-i-save-21" class="permalink">Link</a> </h3> <div class="description"> <p>Attempts to save the record just like <a href="Validations.html#method-i-save">ActiveRecord::Base#save</a> but will raise an <a href="RecordInvalid.html"><code>ActiveRecord::RecordInvalid</code></a> exception instead of returning <code>false</code> if the record is not valid.</p> </div> <div class="sourcecode"> <p class="source-link"> Source: <a href="javascript:toggleSource('method-i-save-21_source')" id="l_method-i-save-21_source">show</a> | <a href="https://github.com/rails/rails/blob/cf6ff17e9a3c6c1139040b519a341f55f0be16cf/activerecord/lib/active_record/validations.rb#L53" target="_blank" class="github_url">on GitHub</a> </p> <div id="method-i-save-21_source" class="dyn-source"> <pre><span class="ruby-comment"># File activerecord/lib/active_record/validations.rb, line 53</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">save!</span>(<span class="ruby-operator">**</span><span class="ruby-identifier">options</span>) <span class="ruby-identifier">perform_validations</span>(<span class="ruby-identifier">options</span>) <span class="ruby-operator">?</span> <span class="ruby-keyword">super</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">raise_validation_error</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div class="method"> <h3 class="title method-title" id="method-i-valid-3F"> <b>valid?</b>(context = nil) <a href="../../classes/ActiveRecord/Validations.html#method-i-valid-3F" name="method-i-valid-3F" class="permalink">Link</a> </h3> <div class="description"> <p>Runs all the validations within the specified context. Returns <code>true</code> if no errors are found, <code>false</code> otherwise.</p> <p>Aliased as <a href="Validations.html#method-i-validate"><code>validate</code></a>.</p> <p>If the argument is <code>false</code> (default is <code>nil</code>), the context is set to <code>:create</code> if <a href="Persistence.html#method-i-new_record-3F">new_record?</a> is <code>true</code>, and to <code>:update</code> if it is not. If the argument is an array of contexts, <code>post.valid?([:create, :update])</code>, the validations are run within multiple contexts.</p> <p>Validations with no <code>:on</code> option will run no matter the context. Validations with some <code>:on</code> option will only run in the specified context.</p> </div> <div class="aka"> Also aliased as: <a href="Validations.html#method-i-validate">validate</a> </div> <div class="sourcecode"> <p class="source-link"> Source: <a href="javascript:toggleSource('method-i-valid-3F_source')" id="l_method-i-valid-3F_source">show</a> | <a href="https://github.com/rails/rails/blob/cf6ff17e9a3c6c1139040b519a341f55f0be16cf/activerecord/lib/active_record/validations.rb#L69" target="_blank" class="github_url">on GitHub</a> </p> <div id="method-i-valid-3F_source" class="dyn-source"> <pre><span class="ruby-comment"># File activerecord/lib/active_record/validations.rb, line 69</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">valid?</span>(<span class="ruby-identifier">context</span> = <span class="ruby-keyword">nil</span>) <span class="ruby-identifier">context</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">default_validation_context</span> <span class="ruby-identifier">output</span> = <span class="ruby-keyword">super</span>(<span class="ruby-identifier">context</span>) <span class="ruby-identifier">errors</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">output</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div class="method"> <h3 class="title method-title" id="method-i-validate"> <b>validate</b>(context = nil) <a href="../../classes/ActiveRecord/Validations.html#method-i-validate" name="method-i-validate" class="permalink">Link</a> </h3> <div class="description"> </div> <div class="aka"> Alias for: <a href="Validations.html#method-i-valid-3F">valid?</a> </div> </div> </div> </main> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10