modified_acts_as_versioned 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. data/.gitignore +1 -0
  2. data/CHANGELOG +82 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README +28 -0
  5. data/RUNNING_UNIT_TESTS +41 -0
  6. data/Rakefile +50 -0
  7. data/VERSION.yml +4 -0
  8. data/acts_as_versioned.gemspec +29 -0
  9. data/init.rb +1 -0
  10. data/lib/acts_as_versioned.rb +488 -0
  11. data/rdoc/classes/ActiveRecord/Acts/Versioned/ActMethods/ClassMethods.html +336 -0
  12. data/rdoc/classes/ActiveRecord/Acts/Versioned/ActMethods.html +581 -0
  13. data/rdoc/classes/ActiveRecord/Acts/Versioned/ClassMethods.html +506 -0
  14. data/rdoc/classes/ActiveRecord/Acts/Versioned.html +187 -0
  15. data/rdoc/created.rid +1 -0
  16. data/rdoc/files/CHANGELOG.html +288 -0
  17. data/rdoc/files/README.html +158 -0
  18. data/rdoc/files/RUNNING_UNIT_TESTS.html +158 -0
  19. data/rdoc/files/lib/acts_as_versioned_rb.html +129 -0
  20. data/rdoc/fr_class_index.html +30 -0
  21. data/rdoc/fr_file_index.html +30 -0
  22. data/rdoc/fr_method_index.html +54 -0
  23. data/rdoc/index.html +24 -0
  24. data/rdoc/rdoc-style.css +208 -0
  25. data/test/abstract_unit.rb +60 -0
  26. data/test/database.yml +18 -0
  27. data/test/fixtures/authors.yml +6 -0
  28. data/test/fixtures/landmark.rb +3 -0
  29. data/test/fixtures/landmark_versions.yml +7 -0
  30. data/test/fixtures/landmarks.yml +7 -0
  31. data/test/fixtures/locked_pages.yml +10 -0
  32. data/test/fixtures/locked_pages_revisions.yml +27 -0
  33. data/test/fixtures/migrations/1_add_versioned_tables.rb +15 -0
  34. data/test/fixtures/page.rb +48 -0
  35. data/test/fixtures/page_versions.yml +16 -0
  36. data/test/fixtures/pages.yml +8 -0
  37. data/test/fixtures/widget.rb +6 -0
  38. data/test/migration_test.rb +47 -0
  39. data/test/schema.rb +82 -0
  40. data/test/versioned_test.rb +379 -0
  41. metadata +114 -0
@@ -0,0 +1,581 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Module: ActiveRecord::Acts::Versioned::ActMethods</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Module</strong></td>
53
+ <td class="class-name-in-header">ActiveRecord::Acts::Versioned::ActMethods</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../../../files/lib/acts_as_versioned_rb.html">
59
+ lib/acts_as_versioned.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ </table>
66
+ </div>
67
+ <!-- banner header -->
68
+
69
+ <div id="bodyContent">
70
+
71
+
72
+
73
+ <div id="contextContent">
74
+
75
+
76
+
77
+ </div>
78
+
79
+ <div id="method-list">
80
+ <h3 class="section-bar">Methods</h3>
81
+
82
+ <div class="name-list">
83
+ <a href="#M000007">altered?</a>&nbsp;&nbsp;
84
+ <a href="#M000002">clear_old_versions</a>&nbsp;&nbsp;
85
+ <a href="#M000008">clone_versioned_model</a>&nbsp;&nbsp;
86
+ <a href="#M000013">empty_callback</a>&nbsp;&nbsp;
87
+ <a href="#M000015">next_version</a>&nbsp;&nbsp;
88
+ <a href="#M000003">revert_to</a>&nbsp;&nbsp;
89
+ <a href="#M000004">revert_to!</a>&nbsp;&nbsp;
90
+ <a href="#M000001">save_version</a>&nbsp;&nbsp;
91
+ <a href="#M000009">save_version?</a>&nbsp;&nbsp;
92
+ <a href="#M000005">save_without_revision</a>&nbsp;&nbsp;
93
+ <a href="#M000006">save_without_revision!</a>&nbsp;&nbsp;
94
+ <a href="#M000014">set_new_version</a>&nbsp;&nbsp;
95
+ <a href="#M000010">version_condition_met?</a>&nbsp;&nbsp;
96
+ <a href="#M000012">without_locking</a>&nbsp;&nbsp;
97
+ <a href="#M000011">without_revision</a>&nbsp;&nbsp;
98
+ </div>
99
+ </div>
100
+
101
+ </div>
102
+
103
+
104
+ <!-- if includes -->
105
+
106
+ <div id="section">
107
+
108
+ <div id="class-list">
109
+ <h3 class="section-bar">Classes and Modules</h3>
110
+
111
+ Module <a href="ActMethods/ClassMethods.html" class="link">ActiveRecord::Acts::Versioned::ActMethods::ClassMethods</a><br />
112
+
113
+ </div>
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+ <!-- if method_list -->
122
+ <div id="methods">
123
+ <h3 class="section-bar">Public Instance methods</h3>
124
+
125
+ <div id="method-M000007" class="method-detail">
126
+ <a name="M000007"></a>
127
+
128
+ <div class="method-heading">
129
+ <a href="#M000007" class="method-signature">
130
+ <span class="method-name">altered?</span><span class="method-args">()</span>
131
+ </a>
132
+ </div>
133
+
134
+ <div class="method-description">
135
+ <p><a class="source-toggle" href="#"
136
+ onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
137
+ <div class="method-source-code" id="M000007-source">
138
+ <pre>
139
+ <span class="ruby-comment cmt"># File lib/acts_as_versioned.rb, line 327</span>
140
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">altered?</span>
141
+ <span class="ruby-identifier">track_altered_attributes</span> <span class="ruby-value">? </span>(<span class="ruby-identifier">version_if_changed</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">changed</span>).<span class="ruby-identifier">length</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">version_if_changed</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">changed?</span>
142
+ <span class="ruby-keyword kw">end</span>
143
+ </pre>
144
+ </div>
145
+ </div>
146
+ </div>
147
+
148
+ <div id="method-M000002" class="method-detail">
149
+ <a name="M000002"></a>
150
+
151
+ <div class="method-heading">
152
+ <a href="#M000002" class="method-signature">
153
+ <span class="method-name">clear_old_versions</span><span class="method-args">()</span>
154
+ </a>
155
+ </div>
156
+
157
+ <div class="method-description">
158
+ <p>
159
+ Clears old revisions if a limit is set with the :limit option in
160
+ <tt>acts_as_versioned</tt>. Override this method to set your own criteria
161
+ for clearing old versions.
162
+ </p>
163
+ <p><a class="source-toggle" href="#"
164
+ onclick="toggleCode('M000002-source');return false;">[Source]</a></p>
165
+ <div class="method-source-code" id="M000002-source">
166
+ <pre>
167
+ <span class="ruby-comment cmt"># File lib/acts_as_versioned.rb, line 285</span>
168
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clear_old_versions</span>
169
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">max_version_limit</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
170
+ <span class="ruby-identifier">excess_baggage</span> = <span class="ruby-identifier">send</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">version_column</span>).<span class="ruby-identifier">to_i</span> <span class="ruby-operator">-</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">max_version_limit</span>
171
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">excess_baggage</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
172
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">versioned_class</span>.<span class="ruby-identifier">delete_all</span> [<span class="ruby-node">&quot;#{self.class.version_column} &lt;= ? and #{self.class.versioned_foreign_key} = ?&quot;</span>, <span class="ruby-identifier">excess_baggage</span>, <span class="ruby-identifier">id</span>]
173
+ <span class="ruby-keyword kw">end</span>
174
+ <span class="ruby-keyword kw">end</span>
175
+ </pre>
176
+ </div>
177
+ </div>
178
+ </div>
179
+
180
+ <div id="method-M000008" class="method-detail">
181
+ <a name="M000008"></a>
182
+
183
+ <div class="method-heading">
184
+ <a href="#M000008" class="method-signature">
185
+ <span class="method-name">clone_versioned_model</span><span class="method-args">(orig_model, new_model)</span>
186
+ </a>
187
+ </div>
188
+
189
+ <div class="method-description">
190
+ <p>
191
+ Clones a model. Used when saving a new version or reverting a model&#8216;s
192
+ version.
193
+ </p>
194
+ <p><a class="source-toggle" href="#"
195
+ onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
196
+ <div class="method-source-code" id="M000008-source">
197
+ <pre>
198
+ <span class="ruby-comment cmt"># File lib/acts_as_versioned.rb, line 332</span>
199
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clone_versioned_model</span>(<span class="ruby-identifier">orig_model</span>, <span class="ruby-identifier">new_model</span>)
200
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">versioned_columns</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">col</span><span class="ruby-operator">|</span>
201
+ <span class="ruby-identifier">new_model</span>.<span class="ruby-identifier">send</span>(<span class="ruby-node">&quot;#{col.name}=&quot;</span>, <span class="ruby-identifier">orig_model</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">col</span>.<span class="ruby-identifier">name</span>)) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">orig_model</span>.<span class="ruby-identifier">has_attribute?</span>(<span class="ruby-identifier">col</span>.<span class="ruby-identifier">name</span>)
202
+ <span class="ruby-keyword kw">end</span>
203
+
204
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">orig_model</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">versioned_class</span>)
205
+ <span class="ruby-identifier">new_model</span>[<span class="ruby-identifier">new_model</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">inheritance_column</span>] = <span class="ruby-identifier">orig_model</span>[<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">versioned_inheritance_column</span>]
206
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">new_model</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">versioned_class</span>)
207
+ <span class="ruby-identifier">new_model</span>[<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">versioned_inheritance_column</span>] = <span class="ruby-identifier">orig_model</span>[<span class="ruby-identifier">orig_model</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">inheritance_column</span>]
208
+ <span class="ruby-keyword kw">end</span>
209
+ <span class="ruby-keyword kw">end</span>
210
+ </pre>
211
+ </div>
212
+ </div>
213
+ </div>
214
+
215
+ <div id="method-M000013" class="method-detail">
216
+ <a name="M000013"></a>
217
+
218
+ <div class="method-heading">
219
+ <a href="#M000013" class="method-signature">
220
+ <span class="method-name">empty_callback</span><span class="method-args">()</span>
221
+ </a>
222
+ </div>
223
+
224
+ <div class="method-description">
225
+ <p><a class="source-toggle" href="#"
226
+ onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
227
+ <div class="method-source-code" id="M000013-source">
228
+ <pre>
229
+ <span class="ruby-comment cmt"># File lib/acts_as_versioned.rb, line 382</span>
230
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">empty_callback</span>() <span class="ruby-keyword kw">end</span>
231
+ </pre>
232
+ </div>
233
+ </div>
234
+ </div>
235
+
236
+ <div id="method-M000003" class="method-detail">
237
+ <a name="M000003"></a>
238
+
239
+ <div class="method-heading">
240
+ <a href="#M000003" class="method-signature">
241
+ <span class="method-name">revert_to</span><span class="method-args">(version)</span>
242
+ </a>
243
+ </div>
244
+
245
+ <div class="method-description">
246
+ <p>
247
+ Reverts a model to a given version. Takes either a version number or an
248
+ instance of the versioned model
249
+ </p>
250
+ <p><a class="source-toggle" href="#"
251
+ onclick="toggleCode('M000003-source');return false;">[Source]</a></p>
252
+ <div class="method-source-code" id="M000003-source">
253
+ <pre>
254
+ <span class="ruby-comment cmt"># File lib/acts_as_versioned.rb, line 294</span>
255
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">revert_to</span>(<span class="ruby-identifier">version</span>)
256
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">version</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">versioned_class</span>)
257
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">version</span>.<span class="ruby-identifier">send</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">versioned_foreign_key</span>) <span class="ruby-operator">==</span> <span class="ruby-identifier">id</span> <span class="ruby-keyword kw">and</span> <span class="ruby-operator">!</span><span class="ruby-identifier">version</span>.<span class="ruby-identifier">new_record?</span>
258
+ <span class="ruby-keyword kw">else</span>
259
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">version</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">send</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">versions_name</span>).<span class="ruby-identifier">send</span>(<span class="ruby-node">&quot;find_by_#{self.class.version_column}&quot;</span>, <span class="ruby-identifier">version</span>)
260
+ <span class="ruby-keyword kw">end</span>
261
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">clone_versioned_model</span>(<span class="ruby-identifier">version</span>, <span class="ruby-keyword kw">self</span>)
262
+ <span class="ruby-identifier">send</span>(<span class="ruby-node">&quot;#{self.class.version_column}=&quot;</span>, <span class="ruby-identifier">version</span>.<span class="ruby-identifier">send</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">version_column</span>))
263
+ <span class="ruby-keyword kw">true</span>
264
+ <span class="ruby-keyword kw">end</span>
265
+ </pre>
266
+ </div>
267
+ </div>
268
+ </div>
269
+
270
+ <div id="method-M000004" class="method-detail">
271
+ <a name="M000004"></a>
272
+
273
+ <div class="method-heading">
274
+ <a href="#M000004" class="method-signature">
275
+ <span class="method-name">revert_to!</span><span class="method-args">(version)</span>
276
+ </a>
277
+ </div>
278
+
279
+ <div class="method-description">
280
+ <p>
281
+ Reverts a model to a given version and saves the model. Takes either a
282
+ version number or an instance of the versioned model
283
+ </p>
284
+ <p><a class="source-toggle" href="#"
285
+ onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
286
+ <div class="method-source-code" id="M000004-source">
287
+ <pre>
288
+ <span class="ruby-comment cmt"># File lib/acts_as_versioned.rb, line 307</span>
289
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">revert_to!</span>(<span class="ruby-identifier">version</span>)
290
+ <span class="ruby-identifier">revert_to</span>(<span class="ruby-identifier">version</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">save_without_revision</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">false</span>
291
+ <span class="ruby-keyword kw">end</span>
292
+ </pre>
293
+ </div>
294
+ </div>
295
+ </div>
296
+
297
+ <div id="method-M000001" class="method-detail">
298
+ <a name="M000001"></a>
299
+
300
+ <div class="method-heading">
301
+ <a href="#M000001" class="method-signature">
302
+ <span class="method-name">save_version</span><span class="method-args">()</span>
303
+ </a>
304
+ </div>
305
+
306
+ <div class="method-description">
307
+ <p>
308
+ Saves a version of the model in the versioned table. This is called in the
309
+ after_save callback by default
310
+ </p>
311
+ <p><a class="source-toggle" href="#"
312
+ onclick="toggleCode('M000001-source');return false;">[Source]</a></p>
313
+ <div class="method-source-code" id="M000001-source">
314
+ <pre>
315
+ <span class="ruby-comment cmt"># File lib/acts_as_versioned.rb, line 272</span>
316
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">save_version</span>
317
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@saving_version</span>
318
+ <span class="ruby-ivar">@saving_version</span> = <span class="ruby-keyword kw">nil</span>
319
+ <span class="ruby-identifier">rev</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">versioned_class</span>.<span class="ruby-identifier">new</span>
320
+ <span class="ruby-identifier">clone_versioned_model</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">rev</span>)
321
+ <span class="ruby-identifier">rev</span>.<span class="ruby-identifier">send</span>(<span class="ruby-node">&quot;#{self.class.version_column}=&quot;</span>, <span class="ruby-identifier">send</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">version_column</span>))
322
+ <span class="ruby-identifier">rev</span>.<span class="ruby-identifier">send</span>(<span class="ruby-node">&quot;#{self.class.versioned_foreign_key}=&quot;</span>, <span class="ruby-identifier">id</span>)
323
+ <span class="ruby-identifier">rev</span>.<span class="ruby-identifier">save</span>
324
+ <span class="ruby-keyword kw">end</span>
325
+ <span class="ruby-keyword kw">end</span>
326
+ </pre>
327
+ </div>
328
+ </div>
329
+ </div>
330
+
331
+ <div id="method-M000009" class="method-detail">
332
+ <a name="M000009"></a>
333
+
334
+ <div class="method-heading">
335
+ <a href="#M000009" class="method-signature">
336
+ <span class="method-name">save_version?</span><span class="method-args">()</span>
337
+ </a>
338
+ </div>
339
+
340
+ <div class="method-description">
341
+ <p>
342
+ Checks whether a new version shall be saved or not. Calls <tt><a
343
+ href="ActMethods.html#M000010">version_condition_met?</a></tt> and
344
+ <tt>changed?</tt>.
345
+ </p>
346
+ <p><a class="source-toggle" href="#"
347
+ onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
348
+ <div class="method-source-code" id="M000009-source">
349
+ <pre>
350
+ <span class="ruby-comment cmt"># File lib/acts_as_versioned.rb, line 345</span>
351
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">save_version?</span>
352
+ <span class="ruby-identifier">version_condition_met?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">altered?</span>
353
+ <span class="ruby-keyword kw">end</span>
354
+ </pre>
355
+ </div>
356
+ </div>
357
+ </div>
358
+
359
+ <div id="method-M000005" class="method-detail">
360
+ <a name="M000005"></a>
361
+
362
+ <div class="method-heading">
363
+ <a href="#M000005" class="method-signature">
364
+ <span class="method-name">save_without_revision</span><span class="method-args">()</span>
365
+ </a>
366
+ </div>
367
+
368
+ <div class="method-description">
369
+ <p>
370
+ Temporarily turns off Optimistic Locking while saving. Used when reverting
371
+ so that a new version is not created.
372
+ </p>
373
+ <p><a class="source-toggle" href="#"
374
+ onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
375
+ <div class="method-source-code" id="M000005-source">
376
+ <pre>
377
+ <span class="ruby-comment cmt"># File lib/acts_as_versioned.rb, line 312</span>
378
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">save_without_revision</span>
379
+ <span class="ruby-identifier">save_without_revision!</span>
380
+ <span class="ruby-keyword kw">true</span>
381
+ <span class="ruby-keyword kw">rescue</span>
382
+ <span class="ruby-keyword kw">false</span>
383
+ <span class="ruby-keyword kw">end</span>
384
+ </pre>
385
+ </div>
386
+ </div>
387
+ </div>
388
+
389
+ <div id="method-M000006" class="method-detail">
390
+ <a name="M000006"></a>
391
+
392
+ <div class="method-heading">
393
+ <a href="#M000006" class="method-signature">
394
+ <span class="method-name">save_without_revision!</span><span class="method-args">()</span>
395
+ </a>
396
+ </div>
397
+
398
+ <div class="method-description">
399
+ <p><a class="source-toggle" href="#"
400
+ onclick="toggleCode('M000006-source');return false;">[Source]</a></p>
401
+ <div class="method-source-code" id="M000006-source">
402
+ <pre>
403
+ <span class="ruby-comment cmt"># File lib/acts_as_versioned.rb, line 319</span>
404
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">save_without_revision!</span>
405
+ <span class="ruby-identifier">without_locking</span> <span class="ruby-keyword kw">do</span>
406
+ <span class="ruby-identifier">without_revision</span> <span class="ruby-keyword kw">do</span>
407
+ <span class="ruby-identifier">save!</span>
408
+ <span class="ruby-keyword kw">end</span>
409
+ <span class="ruby-keyword kw">end</span>
410
+ <span class="ruby-keyword kw">end</span>
411
+ </pre>
412
+ </div>
413
+ </div>
414
+ </div>
415
+
416
+ <div id="method-M000010" class="method-detail">
417
+ <a name="M000010"></a>
418
+
419
+ <div class="method-heading">
420
+ <a href="#M000010" class="method-signature">
421
+ <span class="method-name">version_condition_met?</span><span class="method-args">()</span>
422
+ </a>
423
+ </div>
424
+
425
+ <div class="method-description">
426
+ <p>
427
+ Checks condition set in the :if option to check whether a revision should
428
+ be created or not. Override this for custom version condition checking.
429
+ </p>
430
+ <p><a class="source-toggle" href="#"
431
+ onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
432
+ <div class="method-source-code" id="M000010-source">
433
+ <pre>
434
+ <span class="ruby-comment cmt"># File lib/acts_as_versioned.rb, line 351</span>
435
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">version_condition_met?</span>
436
+ <span class="ruby-keyword kw">case</span>
437
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">version_condition</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Symbol</span>)
438
+ <span class="ruby-identifier">send</span>(<span class="ruby-identifier">version_condition</span>)
439
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">version_condition</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:call</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">version_condition</span>.<span class="ruby-identifier">arity</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">version_condition</span>.<span class="ruby-identifier">arity</span> <span class="ruby-operator">==</span> <span class="ruby-value">-1</span>)
440
+ <span class="ruby-identifier">version_condition</span>.<span class="ruby-identifier">call</span>(<span class="ruby-keyword kw">self</span>)
441
+ <span class="ruby-keyword kw">else</span>
442
+ <span class="ruby-identifier">version_condition</span>
443
+ <span class="ruby-keyword kw">end</span>
444
+ <span class="ruby-keyword kw">end</span>
445
+ </pre>
446
+ </div>
447
+ </div>
448
+ </div>
449
+
450
+ <div id="method-M000012" class="method-detail">
451
+ <a name="M000012"></a>
452
+
453
+ <div class="method-heading">
454
+ <a href="#M000012" class="method-signature">
455
+ <span class="method-name">without_locking</span><span class="method-args">(&amp;block)</span>
456
+ </a>
457
+ </div>
458
+
459
+ <div class="method-description">
460
+ <p>
461
+ Turns off optimistic locking for the duration of the block
462
+ </p>
463
+ <pre>
464
+ @foo.without_locking do
465
+ @foo.save
466
+ end
467
+ </pre>
468
+ <p><a class="source-toggle" href="#"
469
+ onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
470
+ <div class="method-source-code" id="M000012-source">
471
+ <pre>
472
+ <span class="ruby-comment cmt"># File lib/acts_as_versioned.rb, line 378</span>
473
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">without_locking</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
474
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">without_locking</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
475
+ <span class="ruby-keyword kw">end</span>
476
+ </pre>
477
+ </div>
478
+ </div>
479
+ </div>
480
+
481
+ <div id="method-M000011" class="method-detail">
482
+ <a name="M000011"></a>
483
+
484
+ <div class="method-heading">
485
+ <a href="#M000011" class="method-signature">
486
+ <span class="method-name">without_revision</span><span class="method-args">(&amp;block)</span>
487
+ </a>
488
+ </div>
489
+
490
+ <div class="method-description">
491
+ <p>
492
+ Executes the block with the versioning callbacks disabled.
493
+ </p>
494
+ <pre>
495
+ @foo.without_revision do
496
+ @foo.save
497
+ end
498
+ </pre>
499
+ <p><a class="source-toggle" href="#"
500
+ onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
501
+ <div class="method-source-code" id="M000011-source">
502
+ <pre>
503
+ <span class="ruby-comment cmt"># File lib/acts_as_versioned.rb, line 368</span>
504
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">without_revision</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
505
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">without_revision</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
506
+ <span class="ruby-keyword kw">end</span>
507
+ </pre>
508
+ </div>
509
+ </div>
510
+ </div>
511
+
512
+ <h3 class="section-bar">Protected Instance methods</h3>
513
+
514
+ <div id="method-M000015" class="method-detail">
515
+ <a name="M000015"></a>
516
+
517
+ <div class="method-heading">
518
+ <a href="#M000015" class="method-signature">
519
+ <span class="method-name">next_version</span><span class="method-args">()</span>
520
+ </a>
521
+ </div>
522
+
523
+ <div class="method-description">
524
+ <p>
525
+ Gets the next available version for the current record, or 1 for a new
526
+ record
527
+ </p>
528
+ <p><a class="source-toggle" href="#"
529
+ onclick="toggleCode('M000015-source');return false;">[Source]</a></p>
530
+ <div class="method-source-code" id="M000015-source">
531
+ <pre>
532
+ <span class="ruby-comment cmt"># File lib/acts_as_versioned.rb, line 392</span>
533
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">next_version</span>
534
+ (<span class="ruby-identifier">new_record?</span> <span class="ruby-value">? </span><span class="ruby-value">0</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">send</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">versions_name</span>).<span class="ruby-identifier">calculate</span>(<span class="ruby-identifier">:max</span>, <span class="ruby-identifier">version_column</span>).<span class="ruby-identifier">to_i</span>) <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
535
+ <span class="ruby-keyword kw">end</span>
536
+ </pre>
537
+ </div>
538
+ </div>
539
+ </div>
540
+
541
+ <div id="method-M000014" class="method-detail">
542
+ <a name="M000014"></a>
543
+
544
+ <div class="method-heading">
545
+ <a href="#M000014" class="method-signature">
546
+ <span class="method-name">set_new_version</span><span class="method-args">()</span>
547
+ </a>
548
+ </div>
549
+
550
+ <div class="method-description">
551
+ <p>
552
+ sets the new version before saving, unless you&#8216;re using optimistic
553
+ locking. In that case, let it take care of the version.
554
+ </p>
555
+ <p><a class="source-toggle" href="#"
556
+ onclick="toggleCode('M000014-source');return false;">[Source]</a></p>
557
+ <div class="method-source-code" id="M000014-source">
558
+ <pre>
559
+ <span class="ruby-comment cmt"># File lib/acts_as_versioned.rb, line 386</span>
560
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_new_version</span>
561
+ <span class="ruby-ivar">@saving_version</span> = <span class="ruby-identifier">new_record?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">save_version?</span>
562
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">send</span>(<span class="ruby-node">&quot;#{self.class.version_column}=&quot;</span>, <span class="ruby-identifier">next_version</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">new_record?</span> <span class="ruby-operator">||</span> (<span class="ruby-operator">!</span><span class="ruby-identifier">locking_enabled?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">save_version?</span>)
563
+ <span class="ruby-keyword kw">end</span>
564
+ </pre>
565
+ </div>
566
+ </div>
567
+ </div>
568
+
569
+
570
+ </div>
571
+
572
+
573
+ </div>
574
+
575
+
576
+ <div id="validator-badges">
577
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
578
+ </div>
579
+
580
+ </body>
581
+ </html>