audited-hp 4.3.0
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.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/.travis.yml +32 -0
- data/.yardopts +3 -0
- data/Appraisals +22 -0
- data/CHANGELOG +153 -0
- data/Gemfile +3 -0
- data/LICENSE +19 -0
- data/README.md +299 -0
- data/Rakefile +18 -0
- data/gemfiles/rails40.gemfile +9 -0
- data/gemfiles/rails41.gemfile +8 -0
- data/gemfiles/rails42.gemfile +8 -0
- data/gemfiles/rails50.gemfile +8 -0
- data/lib/audited-rspec.rb +4 -0
- data/lib/audited.rb +29 -0
- data/lib/audited/audit.rb +149 -0
- data/lib/audited/auditor.rb +309 -0
- data/lib/audited/rspec_matchers.rb +177 -0
- data/lib/audited/sweeper.rb +60 -0
- data/lib/audited/version.rb +3 -0
- data/lib/generators/audited/install_generator.rb +20 -0
- data/lib/generators/audited/migration.rb +15 -0
- data/lib/generators/audited/templates/add_association_to_audits.rb +11 -0
- data/lib/generators/audited/templates/add_comment_to_audits.rb +9 -0
- data/lib/generators/audited/templates/add_remote_address_to_audits.rb +10 -0
- data/lib/generators/audited/templates/add_request_uuid_to_audits.rb +10 -0
- data/lib/generators/audited/templates/install.rb +30 -0
- data/lib/generators/audited/templates/rename_association_to_associated.rb +23 -0
- data/lib/generators/audited/templates/rename_changes_to_audited_changes.rb +9 -0
- data/lib/generators/audited/templates/rename_parent_to_association.rb +11 -0
- data/lib/generators/audited/upgrade_generator.rb +57 -0
- data/spec/audited/audit_spec.rb +199 -0
- data/spec/audited/auditor_spec.rb +607 -0
- data/spec/audited/sweeper_spec.rb +106 -0
- data/spec/audited_spec_helpers.rb +20 -0
- data/spec/rails_app/config/application.rb +8 -0
- data/spec/rails_app/config/database.yml +24 -0
- data/spec/rails_app/config/environment.rb +5 -0
- data/spec/rails_app/config/environments/development.rb +21 -0
- data/spec/rails_app/config/environments/production.rb +35 -0
- data/spec/rails_app/config/environments/test.rb +47 -0
- data/spec/rails_app/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/rails_app/config/initializers/inflections.rb +2 -0
- data/spec/rails_app/config/initializers/secret_token.rb +3 -0
- data/spec/rails_app/config/routes.rb +3 -0
- data/spec/spec_helper.rb +21 -0
- data/spec/support/active_record/models.rb +99 -0
- data/spec/support/active_record/schema.rb +81 -0
- data/test/db/version_1.rb +17 -0
- data/test/db/version_2.rb +18 -0
- data/test/db/version_3.rb +19 -0
- data/test/db/version_4.rb +20 -0
- data/test/db/version_5.rb +18 -0
- data/test/db/version_6.rb +17 -0
- data/test/install_generator_test.rb +17 -0
- data/test/test_helper.rb +19 -0
- data/test/upgrade_generator_test.rb +77 -0
- metadata +229 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8180c7e9719f2de9261fb2b2353532a231c9883f
|
4
|
+
data.tar.gz: 10f2dd4a7f48f5527ee85ccd724c7fda9203fd27
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2aacfc198a4243092803d9e3fdcffb4da68c5fa66508bb765a5b0cf4be84b8f6fed4243743221ba8b07b2821879cac3bd08044f3566f446027e2e3fc429c83ea
|
7
|
+
data.tar.gz: 79729ec7e575eadc4c8855d4b64e636176d453559569908832431708a3d3832321af96feba91c23fe5c3f7a6b627635d050204ddba1aa2533acc80435f6a99ef
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
language: ruby
|
2
|
+
cache: bundler
|
3
|
+
rvm:
|
4
|
+
- 2.1
|
5
|
+
- 2.2.4
|
6
|
+
- 2.3.1
|
7
|
+
- ruby-head
|
8
|
+
env:
|
9
|
+
- DB=SQLITE
|
10
|
+
- DB=POSTGRES
|
11
|
+
- DB=MYSQL
|
12
|
+
gemfile:
|
13
|
+
- gemfiles/rails40.gemfile
|
14
|
+
- gemfiles/rails41.gemfile
|
15
|
+
- gemfiles/rails42.gemfile
|
16
|
+
- gemfiles/rails50.gemfile
|
17
|
+
matrix:
|
18
|
+
allow_failures:
|
19
|
+
- rvm: ruby-head
|
20
|
+
exclude:
|
21
|
+
- rvm: 2.1
|
22
|
+
gemfile: gemfiles/rails50.gemfile
|
23
|
+
fast_finish: true
|
24
|
+
branches:
|
25
|
+
only:
|
26
|
+
- master
|
27
|
+
sudo: false
|
28
|
+
notifications:
|
29
|
+
webhooks:
|
30
|
+
urls:
|
31
|
+
- http://buildlight.collectiveidea.com/
|
32
|
+
on_start: always
|
data/.yardopts
ADDED
data/Appraisals
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
appraise 'rails40' do
|
2
|
+
gem 'rails', '~> 4.0.0'
|
3
|
+
gem 'protected_attributes'
|
4
|
+
gem 'test-unit'
|
5
|
+
end
|
6
|
+
|
7
|
+
appraise 'rails41' do
|
8
|
+
gem 'rails', '~> 4.1.0'
|
9
|
+
gem 'protected_attributes'
|
10
|
+
end
|
11
|
+
|
12
|
+
appraise 'rails42' do
|
13
|
+
gem 'rails', '~> 4.2.0'
|
14
|
+
gem 'protected_attributes'
|
15
|
+
end
|
16
|
+
|
17
|
+
appraise 'rails50' do
|
18
|
+
gem 'rails', '~> 5.0.0'
|
19
|
+
|
20
|
+
# The following needs to point to Github until the release of 0.1.3
|
21
|
+
gem 'rails-observers', github: 'rails/rails-observers', branch: 'master'
|
22
|
+
end
|
data/CHANGELOG
ADDED
@@ -0,0 +1,153 @@
|
|
1
|
+
# Audited ChangeLog
|
2
|
+
|
3
|
+
## Unreleased
|
4
|
+
|
5
|
+
Breaking changes
|
6
|
+
|
7
|
+
- None
|
8
|
+
|
9
|
+
Added
|
10
|
+
|
11
|
+
- None
|
12
|
+
|
13
|
+
Fixed
|
14
|
+
|
15
|
+
- None
|
16
|
+
|
17
|
+
## 4.3.0 (2016-09-17)
|
18
|
+
|
19
|
+
Breaking changes
|
20
|
+
|
21
|
+
- None
|
22
|
+
|
23
|
+
Added
|
24
|
+
|
25
|
+
- Support singular arguments for options: `on` and `only`
|
26
|
+
|
27
|
+
Fixed
|
28
|
+
|
29
|
+
- Fix auditing instance attributes if "only" option specified
|
30
|
+
- Allow private / protected callback declarations
|
31
|
+
- Do not eagerly connect to database
|
32
|
+
|
33
|
+
## 4.2.2 (2016-08-01)
|
34
|
+
|
35
|
+
- Correct auditing_enabled for STI models
|
36
|
+
- Properly set table name for mongomapper
|
37
|
+
|
38
|
+
## 4.2.1 (2016-07-29)
|
39
|
+
|
40
|
+
- Fix bug when only: is a single field.
|
41
|
+
- update gemspec to use mongomapper 0.13
|
42
|
+
- sweeper need not run observer for mongomapper
|
43
|
+
- Make temporary disabling of auditing threadsafe
|
44
|
+
- Centralize `Audited.store` as thread safe variable store
|
45
|
+
|
46
|
+
## 4.2.0 (2015-03-31)
|
47
|
+
|
48
|
+
Not yet documented.
|
49
|
+
|
50
|
+
## 4.0.0 (2014-09-04)
|
51
|
+
|
52
|
+
Not yet documented.
|
53
|
+
|
54
|
+
## 4.0.0.rc1 (2014-07-30)
|
55
|
+
|
56
|
+
Not yet documented.
|
57
|
+
|
58
|
+
## 3.0.0 (2012-09-25)
|
59
|
+
|
60
|
+
Not yet documented.
|
61
|
+
|
62
|
+
## 3.0.0.rc2 (2012-07-09)
|
63
|
+
|
64
|
+
Not yet documented.
|
65
|
+
|
66
|
+
## 3.0.0.rc1 (2012-04-25)
|
67
|
+
|
68
|
+
Not yet documented.
|
69
|
+
|
70
|
+
## 2012-04-10
|
71
|
+
|
72
|
+
- Add Audit scopes for creates, updates and destroys [chriswfx]
|
73
|
+
|
74
|
+
## 2011-10-25
|
75
|
+
|
76
|
+
- Made ignored_attributes configurable [senny]
|
77
|
+
|
78
|
+
## 2011-09-09
|
79
|
+
|
80
|
+
- Rails 3.x support
|
81
|
+
- Support for associated audits
|
82
|
+
- Support for remote IP address storage
|
83
|
+
- Plenty of bug fixes and refactoring
|
84
|
+
- [kennethkalmer, ineu, PatrickMa, jrozner, dwarburton, bsiggelkow, dgm]
|
85
|
+
|
86
|
+
## 2009-01-27
|
87
|
+
|
88
|
+
- Store old and new values for updates, and store all attributes on destroy.
|
89
|
+
- Refactored revisioning methods to work as expected
|
90
|
+
|
91
|
+
## 2008-10-10
|
92
|
+
|
93
|
+
- changed to make it work in development mode
|
94
|
+
|
95
|
+
## 2008-09-24
|
96
|
+
|
97
|
+
- Add ability to record parent record of the record being audited [Kenneth Kalmer]
|
98
|
+
|
99
|
+
## 2008-04-19
|
100
|
+
|
101
|
+
- refactored to make compatible with dirty tracking in edge rails
|
102
|
+
and to stop storing both old and new values in a single audit
|
103
|
+
|
104
|
+
## 2008-04-18
|
105
|
+
|
106
|
+
- Fix NoMethodError when trying to access the :previous revision
|
107
|
+
on a model that doesn't have previous revisions [Alex Soto]
|
108
|
+
|
109
|
+
## 2008-03-21
|
110
|
+
|
111
|
+
- added #changed_attributes to get access to the changes before a
|
112
|
+
save [Chris Parker]
|
113
|
+
|
114
|
+
## 2007-12-16
|
115
|
+
|
116
|
+
- Added #revision_at for retrieving a revision from a specific
|
117
|
+
time [Jacob Atzen]
|
118
|
+
|
119
|
+
## 2007-12-16
|
120
|
+
|
121
|
+
- Fix error when getting revision from audit with no changes
|
122
|
+
[Geoffrey Wiseman]
|
123
|
+
|
124
|
+
## 2007-12-16
|
125
|
+
|
126
|
+
- Remove dependency on acts_as_list
|
127
|
+
|
128
|
+
## 2007-06-17
|
129
|
+
|
130
|
+
- Added support getting previous revisions
|
131
|
+
|
132
|
+
## 2006-11-17
|
133
|
+
|
134
|
+
- Replaced use of singleton User.current_user with cache sweeper
|
135
|
+
implementation for auditing the user that made the change
|
136
|
+
|
137
|
+
## 2006-11-17
|
138
|
+
|
139
|
+
- added migration generator
|
140
|
+
|
141
|
+
## 2006-08-14
|
142
|
+
|
143
|
+
- incorporated changes from Michael Schuerig to write_attribute
|
144
|
+
that saves the new value after every change and not just the
|
145
|
+
first, and performs proper type-casting before doing comparisons
|
146
|
+
|
147
|
+
## 2006-08-14
|
148
|
+
|
149
|
+
- The "changes" are now saved as a serialized hash
|
150
|
+
|
151
|
+
## 2006-07-21
|
152
|
+
|
153
|
+
- initial version
|
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
Copyright © 2010 Brandon Keepers - Collective Idea
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
5
|
+
in the Software without restriction, including without limitation the rights
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
8
|
+
furnished to do so, subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
11
|
+
all copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,299 @@
|
|
1
|
+
Audited [](http://travis-ci.org/collectiveidea/audited) [](https://gemnasium.com/collectiveidea/audited)[](https://codeclimate.com/github/collectiveidea/audited) [](https://hakiri.io/github/collectiveidea/audited/master)
|
2
|
+
=======
|
3
|
+
|
4
|
+
**Audited** (previously acts_as_audited) is an ORM extension that logs all changes to your models. Audited can also record who made those changes, save comments and associate models related to the changes.
|
5
|
+
|
6
|
+
Audited currently (4.x) works with Rails 5.0 and 4.2. It may work with 4.1 and 4.0, but this is not guaranteed.
|
7
|
+
|
8
|
+
For Rails 3, use gem version 3.0 or see the [3.0-stable branch](https://github.com/collectiveidea/audited/tree/3.0-stable).
|
9
|
+
|
10
|
+
## Supported Rubies
|
11
|
+
|
12
|
+
Audited supports and is [tested against](http://travis-ci.org/collectiveidea/audited) the following Ruby versions:
|
13
|
+
|
14
|
+
* 2.1.5
|
15
|
+
* 2.2.4
|
16
|
+
* 2.3.1
|
17
|
+
|
18
|
+
Audited may work just fine with a Ruby version not listed above, but we can't guarantee that it will. If you'd like to maintain a Ruby that isn't listed, please let us know with a [pull request](https://github.com/collectiveidea/audited/pulls).
|
19
|
+
|
20
|
+
## Supported ORMs
|
21
|
+
|
22
|
+
Audited is currently ActiveRecord-only. In a previous life, Audited worked with MongoMapper. Use the [4.2-stable branch](https://github.com/collectiveidea/audited/tree/4.2-stable) if you need MongoMapper.
|
23
|
+
|
24
|
+
## Installation
|
25
|
+
|
26
|
+
Add the gem to your Gemfile:
|
27
|
+
|
28
|
+
```ruby
|
29
|
+
gem "audited", "~> 4.3"
|
30
|
+
```
|
31
|
+
|
32
|
+
If you are using rails 5.0, you would also need the following line in your Gemfile.
|
33
|
+
```ruby
|
34
|
+
gem "rails-observers", github: 'rails/rails-observers'
|
35
|
+
```
|
36
|
+
|
37
|
+
Then, from your Rails app directory, create the `audits` table:
|
38
|
+
|
39
|
+
```bash
|
40
|
+
$ rails generate audited:install
|
41
|
+
$ rake db:migrate
|
42
|
+
```
|
43
|
+
|
44
|
+
#### Upgrading
|
45
|
+
|
46
|
+
If you're already using Audited (or acts_as_audited), your `audits` table may require additional columns. After every upgrade, please run:
|
47
|
+
|
48
|
+
```bash
|
49
|
+
$ rails generate audited:upgrade
|
50
|
+
$ rake db:migrate
|
51
|
+
```
|
52
|
+
|
53
|
+
Upgrading will only make changes if changes are needed.
|
54
|
+
|
55
|
+
|
56
|
+
## Usage
|
57
|
+
|
58
|
+
Simply call `audited` on your models:
|
59
|
+
|
60
|
+
```ruby
|
61
|
+
class User < ActiveRecord::Base
|
62
|
+
audited
|
63
|
+
end
|
64
|
+
```
|
65
|
+
|
66
|
+
By default, whenever a user is created, updated or destroyed, a new audit is created.
|
67
|
+
|
68
|
+
```ruby
|
69
|
+
user = User.create!(name: "Steve")
|
70
|
+
user.audits.count # => 1
|
71
|
+
user.update_attributes!(name: "Ryan")
|
72
|
+
user.audits.count # => 2
|
73
|
+
user.destroy
|
74
|
+
user.audits.count # => 3
|
75
|
+
```
|
76
|
+
|
77
|
+
Audits contain information regarding what action was taken on the model and what changes were made.
|
78
|
+
|
79
|
+
```ruby
|
80
|
+
user.update_attributes!(name: "Ryan")
|
81
|
+
audit = user.audits.last
|
82
|
+
audit.action # => "update"
|
83
|
+
audit.audited_changes # => {"name"=>["Steve", "Ryan"]}
|
84
|
+
```
|
85
|
+
|
86
|
+
You can get previous versions of a record by index or date, or list all
|
87
|
+
revisions.
|
88
|
+
|
89
|
+
```ruby
|
90
|
+
user.revisions
|
91
|
+
user.revision(1)
|
92
|
+
user.revision_at(Date.parse("2016-01-01"))
|
93
|
+
```
|
94
|
+
|
95
|
+
### Specifying columns
|
96
|
+
|
97
|
+
By default, a new audit is created for any attribute changes. You can, however, limit the columns to be considered.
|
98
|
+
|
99
|
+
```ruby
|
100
|
+
class User < ActiveRecord::Base
|
101
|
+
# All fields
|
102
|
+
# audited
|
103
|
+
|
104
|
+
# Single field
|
105
|
+
# audited only: :name
|
106
|
+
|
107
|
+
# Multiple fields
|
108
|
+
# audited only: [:name, :address]
|
109
|
+
|
110
|
+
# All except certain fields
|
111
|
+
# audited except: :password
|
112
|
+
end
|
113
|
+
```
|
114
|
+
|
115
|
+
### Specifying callbacks
|
116
|
+
|
117
|
+
By default, a new audit is created for any Create, Update or Destroy action. You can, however, limit the actions audited.
|
118
|
+
|
119
|
+
```ruby
|
120
|
+
class User < ActiveRecord::Base
|
121
|
+
# All fields and actions
|
122
|
+
# audited
|
123
|
+
|
124
|
+
# Single field, only audit Update and Destroy (not Create)
|
125
|
+
# audited only: :name, on: [:update, :destroy]
|
126
|
+
end
|
127
|
+
```
|
128
|
+
|
129
|
+
### Comments
|
130
|
+
|
131
|
+
You can attach comments to each audit using an `audit_comment` attribute on your model.
|
132
|
+
|
133
|
+
```ruby
|
134
|
+
user.update_attributes!(name: "Ryan", audit_comment: "Changing name, just because")
|
135
|
+
user.audits.last.comment # => "Changing name, just because"
|
136
|
+
```
|
137
|
+
|
138
|
+
You can optionally add the `:comment_required` option to your `audited` call to require comments for all audits.
|
139
|
+
|
140
|
+
```ruby
|
141
|
+
class User < ActiveRecord::Base
|
142
|
+
audited :comment_required => true
|
143
|
+
end
|
144
|
+
```
|
145
|
+
|
146
|
+
### Current User Tracking
|
147
|
+
|
148
|
+
If you're using Audited in a Rails application, all audited changes made within a request will automatically be attributed to the current user. By default, Audited uses the `current_user` method in your controller.
|
149
|
+
|
150
|
+
```ruby
|
151
|
+
class PostsController < ApplicationController
|
152
|
+
def create
|
153
|
+
current_user # => #<User name: "Steve">
|
154
|
+
@post = Post.create(params[:post])
|
155
|
+
@post.audits.last.user # => #<User name: "Steve">
|
156
|
+
end
|
157
|
+
end
|
158
|
+
```
|
159
|
+
|
160
|
+
To use a method other than `current_user`, put the following in an initializer:
|
161
|
+
|
162
|
+
```ruby
|
163
|
+
Audited.current_user_method = :authenticated_user
|
164
|
+
```
|
165
|
+
|
166
|
+
Outside of a request, Audited can still record the user with the `as_user` method:
|
167
|
+
|
168
|
+
```ruby
|
169
|
+
Audited::Audit.as_user(User.find(1)) do
|
170
|
+
post.update_attribute!(title: "Hello, world!")
|
171
|
+
end
|
172
|
+
post.audits.last.user # => #<User id: 1>
|
173
|
+
```
|
174
|
+
|
175
|
+
#### Custom Auditor
|
176
|
+
|
177
|
+
You might need to use a custom auditor from time to time. It can be done by simply passing in a string:
|
178
|
+
|
179
|
+
```ruby
|
180
|
+
class ApplicationController < ActionController::Base
|
181
|
+
def authenticated_user
|
182
|
+
if current_user
|
183
|
+
current_user
|
184
|
+
else
|
185
|
+
'Elon Musk'
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
```
|
190
|
+
|
191
|
+
### Associated Audits
|
192
|
+
|
193
|
+
Sometimes it's useful to associate an audit with a model other than the one being changed. For instance, given the following models:
|
194
|
+
|
195
|
+
```ruby
|
196
|
+
class User < ActiveRecord::Base
|
197
|
+
belongs_to :company
|
198
|
+
audited
|
199
|
+
end
|
200
|
+
|
201
|
+
class Company < ActiveRecord::Base
|
202
|
+
has_many :users
|
203
|
+
end
|
204
|
+
```
|
205
|
+
|
206
|
+
Every change to a user is audited, but what if you want to grab all of the audits of users belonging to a particular company? You can add the `:associated_with` option to your `audited` call:
|
207
|
+
|
208
|
+
```ruby
|
209
|
+
class User < ActiveRecord::Base
|
210
|
+
belongs_to :company
|
211
|
+
audited associated_with: :company
|
212
|
+
end
|
213
|
+
|
214
|
+
class Company < ActiveRecord::Base
|
215
|
+
has_many :users
|
216
|
+
has_associated_audits
|
217
|
+
end
|
218
|
+
```
|
219
|
+
|
220
|
+
Now, when an audit is created for a user, that user's company is also saved alongside the audit. This makes it much easier (and faster) to access audits indirectly related to a company.
|
221
|
+
|
222
|
+
```ruby
|
223
|
+
company = Company.create!(name: "Collective Idea")
|
224
|
+
user = company.users.create!(name: "Steve")
|
225
|
+
user.update_attribute!(name: "Steve Richert")
|
226
|
+
user.audits.last.associated # => #<Company name: "Collective Idea">
|
227
|
+
company.associated_audits.last.auditable # => #<User name: "Steve Richert">
|
228
|
+
```
|
229
|
+
|
230
|
+
### Disabling auditing
|
231
|
+
|
232
|
+
If you want to disable auditing temporarily doing certain tasks, there are a few
|
233
|
+
methods available.
|
234
|
+
|
235
|
+
To disable auditing on a save:
|
236
|
+
|
237
|
+
```ruby
|
238
|
+
@user.save_without_auditing
|
239
|
+
```
|
240
|
+
|
241
|
+
or:
|
242
|
+
|
243
|
+
```ruby
|
244
|
+
@user.without_auditing do
|
245
|
+
@user.save
|
246
|
+
end
|
247
|
+
```
|
248
|
+
|
249
|
+
To disable auditing on a column:
|
250
|
+
|
251
|
+
```ruby
|
252
|
+
User.non_audited_columns = [:first_name, :last_name]
|
253
|
+
```
|
254
|
+
|
255
|
+
To disable auditing on an entire model:
|
256
|
+
|
257
|
+
```ruby
|
258
|
+
User.auditing_enabled = false
|
259
|
+
```
|
260
|
+
|
261
|
+
## Gotchas
|
262
|
+
|
263
|
+
### Using attr_protected with Rails 4.x
|
264
|
+
|
265
|
+
If you're using the `protected_attributes` gem with Rails 4.0, 4.1 or 4.2 (the gem isn't supported in Rails 5.0 or higher), you'll have to take an extra couple of steps to get `audited` working.
|
266
|
+
|
267
|
+
First be sure to add `allow_mass_assignment: true` to your `audited` call; otherwise Audited will
|
268
|
+
interfere with `protected_attributes` and none of your `save` calls will work.
|
269
|
+
|
270
|
+
```ruby
|
271
|
+
class User < ActiveRecord::Base
|
272
|
+
audited allow_mass_assignment: true
|
273
|
+
end
|
274
|
+
```
|
275
|
+
|
276
|
+
Second, be sure to add `audit_ids` to the list of protected attributes to prevent data loss.
|
277
|
+
|
278
|
+
```ruby
|
279
|
+
class User < ActiveRecord::Base
|
280
|
+
audited allow_mass_assignment: true
|
281
|
+
attr_protected :logins, :audit_ids
|
282
|
+
end
|
283
|
+
```
|
284
|
+
|
285
|
+
## Support
|
286
|
+
|
287
|
+
You can find documentation at: http://rdoc.info/github/collectiveidea/audited
|
288
|
+
|
289
|
+
Or join the [mailing list](http://groups.google.com/group/audited) to get help or offer suggestions.
|
290
|
+
|
291
|
+
## Contributing
|
292
|
+
|
293
|
+
In the spirit of [free software](http://www.fsf.org/licensing/essays/free-sw.html), **everyone** is encouraged to help improve this project. Here are a few ways _you_ can pitch in:
|
294
|
+
|
295
|
+
* Use prerelease versions of Audited.
|
296
|
+
* [Report bugs](https://github.com/collectiveidea/audited/issues).
|
297
|
+
* Fix bugs and submit [pull requests](http://github.com/collectiveidea/audited/pulls).
|
298
|
+
* Write, clarify or fix documentation.
|
299
|
+
* Refactor code.
|