activeadmin 2.13.1 → 2.14.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activeadmin might be problematic. Click here for more details.

Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +58 -0
  3. data/CONTRIBUTING.md +3 -4
  4. data/README.md +2 -2
  5. data/app/assets/javascripts/active_admin/base.js +1 -4
  6. data/app/assets/stylesheets/active_admin/_forms.scss +1 -1
  7. data/app/assets/stylesheets/active_admin/structure/_footer.scss +6 -1
  8. data/app/views/layouts/active_admin_logged_out.html.erb +5 -4
  9. data/config/locales/fr.yml +3 -3
  10. data/config/locales/vi.yml +34 -7
  11. data/config/locales/zh-CN.yml +36 -17
  12. data/lib/active_admin/asset_registration.rb +3 -3
  13. data/lib/active_admin/authorization_adapter.rb +2 -0
  14. data/lib/active_admin/base_controller/authorization.rb +2 -2
  15. data/lib/active_admin/dependency.rb +0 -4
  16. data/lib/active_admin/engine.rb +1 -1
  17. data/lib/active_admin/filters/resource_extension.rb +4 -4
  18. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +1 -1
  19. data/lib/active_admin/orm/active_record/comments.rb +8 -8
  20. data/lib/active_admin/pundit_adapter.rb +0 -2
  21. data/lib/active_admin/resource/action_items.rb +2 -2
  22. data/lib/active_admin/version.rb +1 -1
  23. data/lib/active_admin/view_helpers/auto_link_helper.rb +1 -1
  24. data/lib/active_admin/views/index_as_table.rb +1 -1
  25. data/lib/active_admin/views/pages/base.rb +4 -3
  26. data/lib/active_admin/views/pages/index.rb +1 -1
  27. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +17 -0
  28. metadata +5 -44
  29. data/docs/.gitignore +0 -1
  30. data/docs/0-installation.md +0 -142
  31. data/docs/1-general-configuration.md +0 -224
  32. data/docs/10-custom-pages.md +0 -150
  33. data/docs/11-decorators.md +0 -70
  34. data/docs/12-arbre-components.md +0 -214
  35. data/docs/13-authorization-adapter.md +0 -285
  36. data/docs/14-gotchas.md +0 -138
  37. data/docs/2-resource-customization.md +0 -475
  38. data/docs/3-index-pages/custom-index.md +0 -35
  39. data/docs/3-index-pages/index-as-block.md +0 -19
  40. data/docs/3-index-pages/index-as-blog.md +0 -69
  41. data/docs/3-index-pages/index-as-grid.md +0 -27
  42. data/docs/3-index-pages/index-as-table.md +0 -234
  43. data/docs/3-index-pages.md +0 -328
  44. data/docs/4-csv-format.md +0 -74
  45. data/docs/5-forms.md +0 -238
  46. data/docs/6-show-pages.md +0 -93
  47. data/docs/7-sidebars.md +0 -75
  48. data/docs/8-custom-actions.md +0 -177
  49. data/docs/9-batch-actions.md +0 -237
  50. data/docs/CNAME +0 -1
  51. data/docs/Gemfile +0 -4
  52. data/docs/Gemfile.lock +0 -283
  53. data/docs/README.md +0 -24
  54. data/docs/_config.yml +0 -4
  55. data/docs/_includes/footer.html +0 -8
  56. data/docs/_includes/google-analytics.html +0 -16
  57. data/docs/_includes/head.html +0 -7
  58. data/docs/_includes/toc.html +0 -98
  59. data/docs/_includes/top-menu.html +0 -17
  60. data/docs/_layouts/default.html +0 -21
  61. data/docs/documentation.md +0 -60
  62. data/docs/images/activeadmin.png +0 -0
  63. data/docs/images/code-header.png +0 -0
  64. data/docs/images/divider.png +0 -0
  65. data/docs/images/features.png +0 -0
  66. data/docs/images/tidelift.svg +0 -14
  67. data/docs/index.html +0 -226
  68. data/docs/stylesheets/main.css +0 -1205
@@ -1,70 +0,0 @@
1
- ---
2
- redirect_from: /docs/11-decorators.html
3
- ---
4
-
5
- # Decorators
6
-
7
- Active Admin allows you to use the decorator pattern to provide view-specific
8
- versions of a resource. [Draper](https://github.com/drapergem/draper) is
9
- recommended but not required.
10
-
11
- ## Example usage
12
-
13
- ```ruby
14
- # app/models/post.rb
15
- class Post < ActiveRecord::Base
16
- # has title, content, and image_url
17
- end
18
-
19
- # app/decorators/post_decorator.rb
20
- class PostDecorator < Draper::Decorator
21
- delegate_all
22
-
23
- def image
24
- h.image_tag model.image_url
25
- end
26
- end
27
-
28
- # app/admin/post.rb
29
- ActiveAdmin.register Post do
30
- decorate_with PostDecorator
31
-
32
- index do
33
- column :title
34
- column :image
35
- actions
36
- end
37
- end
38
- ```
39
-
40
- You can pass any decorator class as an argument to `decorate_with`
41
- as long as it accepts the record to be decorated as a parameter in
42
- the initializer, and responds to all the necessary methods.
43
-
44
- ```ruby
45
- # app/decorators/post_decorator.rb
46
- class PostDecorator
47
- attr_reader :post
48
- delegate_missing_to :post
49
-
50
- def initialize(post)
51
- @post = post
52
- end
53
- end
54
- ```
55
-
56
- ## Forms
57
-
58
- By default, ActiveAdmin does *not* decorate the resource used to render forms.
59
- If you need ActiveAdmin to decorate the forms, you can pass `decorate: true` to the
60
- form block.
61
-
62
- ```ruby
63
- ActiveAdmin.register Post do
64
- decorate_with PostDecorator
65
-
66
- form decorate: true do |f|
67
- # ...
68
- end
69
- end
70
- ```
@@ -1,214 +0,0 @@
1
- ---
2
- redirect_from: /docs/12-arbre-components.html
3
- ---
4
-
5
- # Arbre Components
6
-
7
- Arbre allows the creation of shareable and extendable HTML components and is
8
- used throughout Active Admin to create view components.
9
-
10
- ## Text Node
11
-
12
- Sometimes it makes sense to insert something into a registered resource like a
13
- non-breaking space or some text. The text_node method can be used to insert
14
- these elements into the page inside of other Arbre components or resource
15
- controller functions.
16
-
17
- ```ruby
18
- ActiveAdmin.register Post do
19
- show do
20
- panel "Post Details" do
21
- attributes_table_for post do
22
- row :id
23
- row 'Tags' do
24
- post.tags.each do |tag|
25
- a tag, href: admin_post_path(q: {tagged_with_contains: tag})
26
- text_node "&nbsp;".html_safe
27
- end
28
- end
29
- end
30
- end
31
- end
32
- end
33
- ```
34
-
35
- ## Panels
36
-
37
- A panel is a component that takes up all available horizontal space and takes a
38
- title and a hash of attributes as arguments. If a sidebar is present, a panel
39
- will take up the remaining space.
40
-
41
- This will create two stacked panels:
42
-
43
- ```ruby
44
- show do
45
- panel "Post Details" do
46
- render partial: "details", locals: {post: post}
47
- end
48
-
49
- panel "Post Tags" do
50
- render partial: "tags", locals: {post: post}
51
- end
52
- end
53
- ```
54
-
55
- ## Columns
56
-
57
- The Columns component allows you draw content into scalable columns. All you
58
- need to do is define the number of columns and the component will take care of
59
- the rest.
60
-
61
- ### Simple Columns
62
-
63
- To create simple columns, use the `columns` method. Within the block, call
64
- the #column method to create a new column.
65
-
66
- ```ruby
67
- columns do
68
- column do
69
- span "Column #1"
70
- end
71
-
72
- column do
73
- span "Column #2"
74
- end
75
- end
76
- ```
77
-
78
- ### Spanning Multiple Columns
79
-
80
- To create columns that have multiple spans, pass the :span option to the column
81
- method.
82
-
83
- ```ruby
84
- columns do
85
- column span: 2 do
86
- span "Column # 1"
87
- end
88
- column do
89
- span "Column # 2"
90
- end
91
- end
92
- ```
93
-
94
- By default, each column spans 1 column. The above layout would have 2 columns,
95
- the first being twice as large as the second.
96
-
97
- ### Custom Column Widths
98
-
99
- Active Admin uses a fluid width layout, causing column width to be defined
100
- using percentages. Due to using this style of layout, columns can shrink or
101
- expand past points that may not be desirable. To overcome this issue,
102
- columns provide `:max_width` and `:min_width` options.
103
-
104
- ```ruby
105
- columns do
106
- column max_width: "200px", min_width: "100px" do
107
- span "Column # 1"
108
- end
109
- column do
110
- span "Column # 2"
111
- end
112
- end
113
- ```
114
-
115
- In the above example, the first column will not grow larger than 200px and will
116
- not shrink less than 100px.
117
-
118
- ### Custom Column Class
119
-
120
- Pass the `:class` option to the column method to set a custom class.
121
-
122
- ```ruby
123
- columns do
124
- column class: "important" do
125
- span "Column # 1"
126
- end
127
- column do
128
- span "Column # 2"
129
- end
130
- end
131
- ```
132
-
133
- ## Table For
134
-
135
- Table For provides the ability to create tables like those present
136
- in `index_as_table`. It takes a collection and a hash of options and then
137
- uses `column` to build the fields to show with the table.
138
-
139
- ```ruby
140
- table_for order.payments do
141
- column(:payment_type) { |payment| payment.payment_type.titleize }
142
- column "Received On", :created_at
143
- column "Details & Notes", :payment_details
144
- column "Amount", :amount_in_dollars
145
- end
146
- ```
147
-
148
- The `column` method can take a title as its first argument and data
149
- (`:your_method`) as its second (or first if no title provided). Column also
150
- takes a block.
151
-
152
- ### Internationalization
153
-
154
- To customize the internationalization for the component, specify a resource to
155
- use for translations via the `i18n` named parameter. This is only necessary for
156
- non-`ActiveRecord::Relation` collections:
157
-
158
- ```ruby
159
- table_for payments, i18n: Payment do
160
- # ...
161
- end
162
- ```
163
-
164
- ## Status tag
165
-
166
- Status tags provide convenient syntactic sugar for styling items that have
167
- status. A common example of where the status tag could be useful is for orders
168
- that are complete or in progress. `status_tag` takes a status, like
169
- "In Progress", and a hash of options. The status_tag will generate HTML markup
170
- that Active Admin CSS uses in styling.
171
-
172
- ```ruby
173
- status_tag 'In Progress'
174
- # => <span class='status_tag in_progress'>In Progress</span>
175
-
176
- status_tag 'active', class: 'important', id: 'status_123', label: 'on'
177
- # => <span class='status_tag active important' id='status_123'>on</span>
178
- ```
179
-
180
- When providing a `true` or `false` value, the `status_tag` will display "Yes"
181
- or "No". This can be configured through the `"en.active_admin.status_tag"`
182
- locale.
183
-
184
- ```ruby
185
- status_tag true
186
- # => <span class='status_tag yes'>Yes</span>
187
- ```
188
-
189
- In the case that a boolean field is `nil`, it will display "No" as a default.
190
- But using the `"en.active_admin.status_tag.unset"` locale key, it can be
191
- configured to display something else.
192
-
193
- ## Tabs
194
-
195
- The Tabs component is helpful for saving page real estate. The first tab will be
196
- the one open when the page initially loads and the rest hidden. You can click
197
- each tab to toggle back and forth between them. Arbre supports unlimited number
198
- of tabs.
199
-
200
- ```ruby
201
- tabs do
202
- tab :active do
203
- table_for orders.active do
204
- ...
205
- end
206
- end
207
-
208
- tab :inactive do
209
- table_for orders.inactive do
210
- ...
211
- end
212
- end
213
- end
214
- ```
@@ -1,285 +0,0 @@
1
- ---
2
- redirect_from: /docs/13-authorization-adapter.html
3
- ---
4
-
5
- # Authorization Adapter
6
-
7
- Active Admin offers the ability to define and use your own authorization
8
- adapter. If implemented, the '#authorized?' will be called when an action is
9
- taken. By default, '#authorized?' returns true.
10
-
11
- ## Setting up your own AuthorizationAdapter
12
-
13
- The following example shows how to set up and tie your authorization
14
- adapter class to Active Admin:
15
-
16
- ```ruby
17
- # app/models/only_authors_authorization.rb
18
- class OnlyAuthorsAuthorization < ActiveAdmin::AuthorizationAdapter
19
-
20
- def authorized?(action, subject = nil)
21
- case subject
22
- when normalized(Post)
23
- # Only let the author update and delete posts
24
- if action == :update || action == :destroy
25
- subject.author == user
26
- else
27
- true
28
- end
29
- else
30
- true
31
- end
32
- end
33
-
34
- end
35
- ```
36
-
37
- In order to hook up `OnlyAuthorsAuthorization` to Active Admin, go to your
38
- application's `config/initializers/active_admin.rb` and add/modify the line:
39
-
40
- ```ruby
41
- config.authorization_adapter = "OnlyAuthorsAuthorization"
42
- ```
43
-
44
- Now, whenever a controller action is performed, the `OnlyAuthorsAuthorization`'s
45
- `#authorized?` method will be called.
46
-
47
- Authorization adapters can be configured per ActiveAdmin namespace as well, for
48
- example:
49
-
50
- ```ruby
51
- ActiveAdmin.setup do |config|
52
- config.namespace :admin do |ns|
53
- ns.authorization_adapter = "AdminAuthorization"
54
- end
55
- config.namespace :my do |ns|
56
- ns.authorization_adapter = "DashboardAuthorization"
57
- end
58
- end
59
- ```
60
-
61
- ## Getting Access to the Current User
62
-
63
- From within your authorization adapter, you can call the `#user` method to
64
- retrieve the current user.
65
-
66
- ```ruby
67
- class OnlyAdmins < ActiveAdmin::AuthorizationAdapter
68
-
69
- def authorized?(action, subject = nil)
70
- user.admin?
71
- end
72
-
73
- end
74
- ```
75
-
76
- ## Scoping Collections in Authorization Adapters
77
-
78
- `ActiveAdmin::AuthorizationAdapter` also provides a hook method
79
- (`#scope_collection`) for the adapter to scope the resource's collection. For
80
- example, you may want to centralize the scoping:
81
-
82
- ```ruby
83
- class OnlyMyAccount < ActiveAdmin::AuthorizationAdapter
84
-
85
- def authorized?(action, subject = nil)
86
- subject.account == user.account
87
- end
88
-
89
- def scope_collection(collection, action = Auth::READ)
90
- collection.where(account_id: user.account_id)
91
- end
92
-
93
- end
94
- ```
95
-
96
- All collections presented on Index Screens will be passed through this method
97
- and will be scoped accordingly.
98
-
99
- ## Managing Access to Pages
100
-
101
- Pages, just like resources, get authorized too. When authorizing a page, the
102
- subject will be an instance of `ActiveAdmin::Page`.
103
-
104
- ```ruby
105
- class OnlyDashboard < ActiveAdmin::AuthorizationAdapter
106
- def authorized?(action, subject = nil)
107
- case subject
108
- when ActiveAdmin::Page
109
- action == :read &&
110
- subject.name == "Dashboard" &&
111
- subject.namespace.name == :admin
112
- else
113
- false
114
- end
115
- end
116
- end
117
- ```
118
-
119
- ## Action Types
120
-
121
- By default Active Admin simplifies the controller actions into 4 actions:
122
-
123
- * `:read` - This controls if the user can view the menu item as well as the
124
- index and show screens.
125
- * `:create` - This controls if the user can view the new screen and submit
126
- the form to the create action.
127
- * `:update` - This controls if the user can view the edit screen and submit
128
- the form to the update action.
129
- * `:destroy` - This controls if the user can delete a resource.
130
-
131
- Each of these actions is available as a constant. Eg: `:read` is available as
132
- `ActiveAdmin::Authorization::READ`.
133
-
134
- ## Checking for Authorization in Controllers and Views
135
-
136
- Active Admin provides a helper method to check if the current user is
137
- authorized to perform an action on a subject.
138
-
139
- Use the `#authorized?(action, subject)` method to check.
140
-
141
- ```ruby
142
- ActiveAdmin.register Post do
143
-
144
- index do
145
- column :title
146
- column '' do |post|
147
- link_to 'Edit', admin_post_path(post) if authorized? :update, post
148
- end
149
- end
150
-
151
- end
152
- ```
153
-
154
- If you are implementing a custom controller action, you can use the
155
- `#authorize!` method to raise an `ActiveAdmin::AccessDenied` exception.
156
-
157
- ```ruby
158
- ActiveAdmin.register Post do
159
-
160
- member_action :publish, method: :post do
161
- post = Post.find(params[:id])
162
-
163
- authorize! :publish, post
164
- post.publish!
165
-
166
- flash[:notice] = "Post has been published"
167
- redirect_to [:admin, post]
168
- end
169
-
170
- action_item :publish, only: :show do
171
- if !post.published? && authorized?(:publish, post)
172
- link_to "Publish", publish_admin_post_path(post), method: :post
173
- end
174
- end
175
-
176
- end
177
- ```
178
-
179
- ## Using the CanCan Adapter
180
-
181
- Sub-classing `ActiveAdmin::AuthorizationAdapter` is fairly low level. Many times
182
- it's nicer to have a simpler DSL for managing authorization. Active Admin
183
- provides an adapter out of the box for [CanCanCan](https://github.com/CanCanCommunity/cancancan).
184
-
185
- To use the CanCan adapter, update the configuration in the Active Admin
186
- initializer:
187
-
188
- ```ruby
189
- config.authorization_adapter = ActiveAdmin::CanCanAdapter
190
- ```
191
-
192
- You can also specify a method to be called on unauthorized access. This is
193
- necessary in order to prevent a redirect loop that can happen if a user tries to
194
- access a page they don't have permissions for (see
195
- [#2081](https://github.com/activeadmin/activeadmin/issues/2081)).
196
-
197
- ```ruby
198
- config.on_unauthorized_access = :access_denied
199
- ```
200
-
201
- The method `access_denied` would be defined in `application_controller.rb`. Here
202
- is one example that redirects the user from the page they don't have permission
203
- to access to a resource they have permission to access (organizations in this
204
- case), and also displays the error message in the browser:
205
-
206
- ```ruby
207
- class ApplicationController < ActionController::Base
208
- protect_from_forgery
209
-
210
- def access_denied(exception)
211
- redirect_to admin_organizations_path, alert: exception.message
212
- end
213
- end
214
- ```
215
-
216
- By default this will use the ability class named "Ability". This can also be
217
- changed from the initializer:
218
-
219
- ```ruby
220
- config.cancan_ability_class = "MyCustomAbility"
221
- ```
222
-
223
- Now you can simply use CanCanCan the way that you would expect and
224
- Active Admin will use it for authorization:
225
-
226
- ```ruby
227
- # app/models/ability.rb
228
- class Ability
229
- include CanCan::Ability
230
-
231
- def initialize(user)
232
- can :manage, Post
233
- can :read, User
234
- can :manage, User, id: user.id
235
- can :read, ActiveAdmin::Page, name: "Dashboard", namespace_name: "admin"
236
- end
237
-
238
- end
239
- ```
240
-
241
- To view more details about the API's, visit project pages of
242
- [CanCanCan](https://github.com/CanCanCommunity/cancancan).
243
-
244
- ## Using the Pundit Adapter
245
-
246
- Active Admin also provides an adapter out of the box for
247
- [Pundit](https://github.com/varvet/pundit).
248
-
249
- To use the Pundit adapter, update the configuration in the Active Admin
250
- initializer:
251
-
252
- ```ruby
253
- config.authorization_adapter = ActiveAdmin::PunditAdapter
254
- ```
255
-
256
- Once that's done, Active Admin will pick up your Pundit policies, and use
257
- them for authorization. For more information about setting up Pundit, see
258
- [their documentation](https://github.com/varvet/pundit#installation).
259
-
260
- Pundit also has [verify_authorized and/or verify_policy_scoped
261
- methods](https://github.com/varvet/pundit#ensuring-policies-and-scopes-are-used)
262
- to enforce usage of `authorized` and `policy_scope`. This conflicts with Active
263
- Admin's authorization architecture, so if you're using those features, you'll
264
- want to disable them for Active Admin's controllers:
265
-
266
- ```ruby
267
- class ApplicationController < ActionController::Base
268
- include Pundit
269
- after_action :verify_authorized, except: :index, unless: :active_admin_controller?
270
- after_action :verify_policy_scoped, only: :index, unless: :active_admin_controller?
271
-
272
- def active_admin_controller?
273
- is_a?(ActiveAdmin::BaseController)
274
- end
275
- end
276
- ```
277
-
278
- If you want to use batch actions, ensure that `destroy_all?` method is defined
279
- in your policy class. You can use this [template
280
- policy](https://github.com/activeadmin/activeadmin/blob/master/spec/support/templates/policies/application_policy.rb)
281
- in your application instead of default one generated by Pundit's
282
- `rails g pundit:install` command.
283
-
284
- In addition, there are [example policies](https://github.com/activeadmin/activeadmin/tree/master/spec/support/templates/policies/active_admin)
285
- for restricting access to ActiveAdmin's pages and comments.
data/docs/14-gotchas.md DELETED
@@ -1,138 +0,0 @@
1
- ---
2
- redirect_from: /docs/14-gotchas.html
3
- ---
4
-
5
- # Gotchas
6
-
7
- ## Security
8
-
9
- ### Spreadsheet applications vulnerable to unescaped CSV data
10
-
11
- If your CSV export includes untrusted data provided by your users, it's possible
12
- that they could include an executable formula that could call arbitrary commands
13
- on your computer. See
14
- [#4256](https://github.com/activeadmin/activeadmin/issues/4256) for more
15
- details.
16
-
17
- ## Session Commits & Asset Pipeline
18
-
19
- When configuring the asset pipeline ensure that the asset prefix
20
- (`config.assets.prefix`) is not the same as the namespace of ActiveAdmin
21
- (default namespace is `/admin`). If they are the same Sprockets will prevent the
22
- session from being committed. Flash messages won't work and you will be unable to
23
- use the session for storing anything.
24
-
25
- For more information see [the following
26
- post](http://www.intridea.com/blog/2013/3/20/rails-assets-prefix-may-disable-your-session).
27
-
28
- ## Helpers
29
-
30
- There are two known gotchas with helpers. This hopefully will help you to
31
- find a solution.
32
-
33
- ### Helpers are not reloading in development
34
-
35
- This is a known and still open
36
- [issue](https://github.com/activeadmin/activeadmin/issues/697) the only way is
37
- to restart your server each time you change a helper.
38
-
39
- ### Helper maybe not included by default
40
-
41
- If you use `config.action_controller.include_all_helpers = false` in your
42
- application config, you need to include it by hand.
43
-
44
- #### Solutions
45
-
46
- ##### First use a monkey patch
47
-
48
- This works for all ActiveAdmin resources at once.
49
-
50
- ```ruby
51
- # config/initializers/active_admin_helpers.rb
52
- ActiveAdmin::BaseController.class_eval do
53
- helper ApplicationHelper
54
- end
55
- ```
56
-
57
- ##### Second use the `controller` method
58
-
59
- This works only for one resource at a time.
60
-
61
- ```ruby
62
- ActiveAdmin.register User do
63
- controller do
64
- helper UserHelper
65
- end
66
- end
67
- ```
68
-
69
- ## CSS
70
-
71
- In order to avoid the override of your application style with the Active Admin
72
- one, you can do one of these things:
73
-
74
- * You can properly move the generated file `active_admin.scss` from
75
- `app/assets/stylesheets` to `vendor/assets/stylesheets`.
76
- * You can remove all `require_tree` commands from your root level css files,
77
- where the `active_admin.scss` is in the tree.
78
-
79
- ## Conflicts
80
-
81
- ### With gems that provides a `search` class method on a model
82
-
83
- If a gem defines a `search` class method on a model, this can result in conflicts
84
- with the same method provided by `ransack` (a dependency of ActiveAdmin).
85
-
86
- Each of this conflicts need to solved is a different way. Some solutions are
87
- listed below.
88
-
89
- #### `tire`, `retire` and `elasticsearch-rails`
90
-
91
- This conflict can be solved, by using explicitly the `search` method of `tire`,
92
- `retire` or `elasticsearch-rails`:
93
-
94
- ##### For `tire` and `retire`
95
-
96
- ```ruby
97
- YourModel.tire.search
98
- ```
99
-
100
- ##### For `elasticsearch-rails`
101
-
102
- ```ruby
103
- YourModel.__elasticsearch__.search
104
- ```
105
-
106
- ### Sunspot Solr
107
-
108
- ```ruby
109
- YourModel.solr_search
110
- ```
111
-
112
- ### Rails 5 scaffold generators
113
-
114
- Active Admin requires the `inherited_resources` gem which may break scaffolding
115
- under Rails 5 as it replaces the default scaffold generator. The solution is to
116
- configure the default controller in `config/application.rb` as outlined in
117
- [activeadmin/inherited_resources#195](https://github.com/activeadmin/inherited_resources/issues/195)
118
-
119
- ```ruby
120
- module SampleApp
121
- class Application < Rails::Application
122
- ...
123
- config.app_generators.scaffold_controller = :scaffold_controller
124
- ...
125
- end
126
- end
127
- ```
128
-
129
- ## Authentication & Application Controller
130
-
131
- The `ActiveAdmin::BaseController` inherits from the `ApplicationController`. Any
132
- authentication method(s) specified in the `ApplicationController` callbacks will
133
- be called instead of the authentication method in the active admin config file.
134
- For example, if the ApplicationController has a callback `before_action
135
- :custom_authentication_method` and the config file's authentication method is
136
- `config.authentication_method = :authenticate_active_admin_user`, then
137
- `custom_authentication_method` will be called instead of
138
- `authenticate_active_admin_user`.